阿萨奇 发表于 2020-5-6 16:25:33

将列表写入文件

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:27:32

本帖最后由 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()

wp231957 发表于 2020-5-6 16:27:42

没设置正确编码

zltzlt 发表于 2020-5-6 16:28:16

把第三行改为:

fo = open(fname, "w+", encoding="utf-8")

qiuyouzhi 发表于 2020-5-6 16:29:04

你得关闭文件后,才能正确读取。
或者,你可以用print写入,设置一下flush,file参数。

阿萨奇 发表于 2020-5-6 16:31:24

wp231957 发表于 2020-5-6 16:27
没设置正确编码

那应该怎样设置呢?

阿萨奇 发表于 2020-5-6 16:42:38

sunrise085 发表于 2020-5-6 16:27
一般情况下,写文件之后需要关闭文件,才能把相关内容保存到文件中去
你写完之后就进行读是读不到内容的
...

我按图一的代码敲了一遍,结果文件显示还是那个样子,这是为什么呢?

sunrise085 发表于 2020-5-6 16:57:59

阿萨奇 发表于 2020-5-6 16:42
我按图一的代码敲了一遍,结果文件显示还是那个样子,这是为什么呢?

图1?
第一段代码么?为什么不直接复制?
你是在手机上编程吗?
不知道手机上编程可能会遇到什么问题,可能是编码问题
你尝试在open时添加一个参数open(fname, "w+", encoding="utf-8")
试一下。我也不知道能不能行。我写的程序运行过 了,在电脑上运行是没问题的

阿萨奇 发表于 2020-5-6 17:13:11

sunrise085 发表于 2020-5-6 16:57
图1?
第一段代码么?为什么不直接复制?
你是在手机上编程吗?


我试了一下您的代码,spyder右边的页面的确是显示了唐诗,宋词,元曲,可是打开目录中的文件就成了我刚发的那一段不知名的文字。

sunrise085 发表于 2020-5-6 17:17:05

阿萨奇 发表于 2020-5-6 17:13
我试了一下您的代码,spyder右边的页面的确是显示了唐诗,宋词,元曲,可是打开目录中的文件就成了我刚发 ...

那应该就是文件编码问题了。手机上文件的编码格式我没研究过,若encoding="utf-8"不行的话,可以尝试一下encoding="gbk"

阿萨奇 发表于 2020-5-6 20:28:31

我是用电脑端的,我也把您发给我的代码复制了一遍,结果打开那个目录文件还是一连串的奇怪文字!
页: [1]
查看完整版本: 将列表写入文件