鱼C论坛

 找回密码
 立即注册
查看: 1937|回复: 10

[已解决]将列表写入文件

[复制链接]
发表于 2020-5-6 16:25:33 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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фй кнйтгз
最佳答案
2020-5-6 17:17:05
阿萨奇 发表于 2020-5-6 17:13
我试了一下您的代码,spyder右边的页面的确是显示了唐诗,宋词,元曲,可是打开目录中的文件就成了我刚发 ...

那应该就是文件编码问题了。手机上文件的编码格式我没研究过,若encoding="utf-8"不行的话,可以尝试一下encoding="gbk"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-6 16:27:42 | 显示全部楼层
没设置正确编码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-6 16:28:16 | 显示全部楼层
把第三行改为:
fo = open(fname, "w+", encoding="utf-8")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-6 16:29:04 | 显示全部楼层
你得关闭文件后,才能正确读取。
或者,你可以用print写入,设置一下flush,file参数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-6 16:31:24 From FishC Mobile | 显示全部楼层
wp231957 发表于 2020-5-6 16:27
没设置正确编码

那应该怎样设置呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-6 16:42:38 From FishC Mobile | 显示全部楼层
sunrise085 发表于 2020-5-6 16:27
一般情况下,写文件之后需要关闭文件,才能把相关内容保存到文件中去
你写完之后就进行读是读不到内容的
...

我按图一的代码敲了一遍,结果文件显示还是那个样子,这是为什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

图1?
第一段代码么?为什么不直接复制?
你是在手机上编程吗?
不知道手机上编程可能会遇到什么问题,可能是编码问题
你尝试在open时添加一个参数  open(fname, "w+", encoding="utf-8")
试一下。我也不知道能不能行。我写的程序运行过 了,在电脑上运行是没问题的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-6 17:13:11 | 显示全部楼层
sunrise085 发表于 2020-5-6 16:57
图1?
第一段代码么?为什么不直接复制?
你是在手机上编程吗?

我试了一下您的代码,spyder右边的页面的确是显示了唐诗,宋词,元曲,可是打开目录中的文件就成了我刚发的那一段不知名的文字。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那应该就是文件编码问题了。手机上文件的编码格式我没研究过,若encoding="utf-8"不行的话,可以尝试一下encoding="gbk"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-6 20:28:31 From FishC Mobile | 显示全部楼层
我是用电脑端的,我也把您发给我的代码复制了一遍,结果打开那个目录文件还是一连串的奇怪文字!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 19:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表