鱼C论坛

 找回密码
 立即注册
查看: 5272|回复: 8

[已解决]关于python写入文件为空白的问题

[复制链接]
发表于 2019-5-17 12:25:40 | 显示全部楼层 |阅读模式

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

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

x
import os
os.chdir(r'C:\Users\Administrator\Desktop')
f=open('file1.txt','r')
f2=open('file2.txt','w')
for i in f:
   i=list(str(i).strip())
   i.reverse()
   i=''.join(i)
   f2.write(i+"\n")
   print(i)
f.close()


代码是没问题的。
关键不在代码,为什么用IDLE运行后,file2文件为空白,如果直接运行该文件(命名为)“file.py” 则能看到file2有符合预期的内容。
这到底是什么原因,求解。
最佳答案
2019-5-17 13:24:43
本帖最后由 jackz007 于 2019-5-17 13:44 编辑
十分奇怪哦 发表于 2019-5-17 12:55
呃呃  这个是忘了,不过不是这方面的原因。直接运行py文件能有内容,用idle打开run的话,file2是空白文档 ...


楼主再试试这个代码,看看是否有改观
import sys

f1 = open(sys . argv[0] , 'rt')
f2 = open(r'C:\Users\Administrator\Desktop\file2.txt' , 'wt')
for i in f1:
   i = i[::-1] . strip()
   f2 . write(i + '\n') 
   print(i)
f2 . close()
f1 . close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-17 12:32:09 | 显示全部楼层
f2.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-17 12:55:05 | 显示全部楼层

呃呃  这个是忘了,不过不是这方面的原因。直接运行py文件能有内容,用idle打开run的话,file2是空白文档。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-17 13:24:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2019-5-17 13:44 编辑
十分奇怪哦 发表于 2019-5-17 12:55
呃呃  这个是忘了,不过不是这方面的原因。直接运行py文件能有内容,用idle打开run的话,file2是空白文档 ...


楼主再试试这个代码,看看是否有改观
import sys

f1 = open(sys . argv[0] , 'rt')
f2 = open(r'C:\Users\Administrator\Desktop\file2.txt' , 'wt')
for i in f1:
   i = i[::-1] . strip()
   f2 . write(i + '\n') 
   print(i)
f2 . close()
f1 . close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-17 13:47:44 | 显示全部楼层
本帖最后由 13572044595 于 2019-5-17 13:49 编辑
十分奇怪哦 发表于 2019-5-17 12:55
呃呃  这个是忘了,不过不是这方面的原因。直接运行py文件能有内容,用idle打开run的话,file2是空白文档 ...


编译器在程序运行完毕之后,会默认自动关闭文件,
你在 shell 里面运行完毕,文件没有内容,你把 shell 关闭,在看看 文件是否 有 内容`
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-17 20:01:13 | 显示全部楼层
13572044595 发表于 2019-5-17 13:47
编译器在程序运行完毕之后,会默认自动关闭文件,
你在 shell 里面运行完毕,文件没有内容,你把 shel ...

嗯嗯试了 没有哇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-17 20:10:44 | 显示全部楼层
jackz007 发表于 2019-5-17 13:24
楼主再试试这个代码,看看是否有改观

emmm 报错了,类型错误,,我还没学到,3 4行代码能解释一下嘛,,,,后面那个应该是'r+'  和 ‘w+' 吧,楼主可能打错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-17 20:14:25 | 显示全部楼层
13572044595 发表于 2019-5-17 13:47
编译器在程序运行完毕之后,会默认自动关闭文件,
你在 shell 里面运行完毕,文件没有内容,你把 shel ...

我在shell运行的时候,它会在shell上打印出内容。关了以后打开文件2,仍然是空白的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-18 18:42:43 | 显示全部楼层
本帖最后由 jackz007 于 2019-5-18 18:54 编辑
f1 = open(sys . argv[0] , 'rt')                                  # sys . argv[0] 就是本脚本文件的名字,'rt' 代表文件打开模式为:文本(txt)读
f2 = open(r'C:\Users\Administrator\Desktop\file2.txt' , 'wt')    # 'wt' 代表文件打开模式为:文本(txt)写
      这个代码会把当前 Python 源程序中的代码按行首尾颠倒然后写入文件 'C:\Users\Administrator\Desktop\file2.txt' 中,我在 IDLE 中试过,除非 'C:\Users\Administrator\Desktop\' 这个路径不存在,否则, file2.txt 是绝对不可能成为空白文件的,为了排除干扰,你可以考虑先把 file2.txt 删掉再运行本代码。
      如果不知道 sys .argv[0] 是什么,那就在合适的位置插入一条语句 print('sys . argv[0] =  ' , sys . argv[0]) 不就可以了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 07:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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