将列表写入文件
2 fname = input("请输入要写入的文件: ")3 fo = open(fname, "w+")
4ls = ["唐诗","宋词","元曲"]
5 fo. writelines(ls)
6 for line in fo:
7 print( line)
8 fo.close()
为什么文件出来的结果是这样的?
1 hфй кнйтгз 本帖最后由 sunrise085 于 2020-5-6 16:33 编辑
一般情况下,写文件之后需要关闭文件,才能把相关内容保存到文件中去
你写完之后就进行读是读不到内容的
fname = input("请输入要写入的文件: ")
fo = open(fname, "w+")
ls = ["唐诗","宋词","元曲"]
fo. writelines(ls)
fo.close()
fo = open(fname, "r")
for line in fo:
print( line)
fo.close()
另外,写完文件之后光标在文件末尾,需要移动光标到文件开头,才能正确的读文件
fname = input("请输入要写入的文件: ")
fo = open(fname, "w+")
ls = ["唐诗","宋词","元曲"]
fo. writelines(ls)
fo.seek(0)
for line in fo:
print( line)
fo.close() 没设置正确编码 把第三行改为:
fo = open(fname, "w+", encoding="utf-8") 你得关闭文件后,才能正确读取。
或者,你可以用print写入,设置一下flush,file参数。 wp231957 发表于 2020-5-6 16:27
没设置正确编码
那应该怎样设置呢? sunrise085 发表于 2020-5-6 16:27
一般情况下,写文件之后需要关闭文件,才能把相关内容保存到文件中去
你写完之后就进行读是读不到内容的
...
我按图一的代码敲了一遍,结果文件显示还是那个样子,这是为什么呢? 阿萨奇 发表于 2020-5-6 16:42
我按图一的代码敲了一遍,结果文件显示还是那个样子,这是为什么呢?
图1?
第一段代码么?为什么不直接复制?
你是在手机上编程吗?
不知道手机上编程可能会遇到什么问题,可能是编码问题
你尝试在open时添加一个参数open(fname, "w+", encoding="utf-8")
试一下。我也不知道能不能行。我写的程序运行过 了,在电脑上运行是没问题的
sunrise085 发表于 2020-5-6 16:57
图1?
第一段代码么?为什么不直接复制?
你是在手机上编程吗?
我试了一下您的代码,spyder右边的页面的确是显示了唐诗,宋词,元曲,可是打开目录中的文件就成了我刚发的那一段不知名的文字。 阿萨奇 发表于 2020-5-6 17:13
我试了一下您的代码,spyder右边的页面的确是显示了唐诗,宋词,元曲,可是打开目录中的文件就成了我刚发 ...
那应该就是文件编码问题了。手机上文件的编码格式我没研究过,若encoding="utf-8"不行的话,可以尝试一下encoding="gbk" 我是用电脑端的,我也把您发给我的代码复制了一遍,结果打开那个目录文件还是一连串的奇怪文字!
页:
[1]