十分奇怪哦 发表于 2019-5-17 12:25:40

关于python写入文件为空白的问题

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有符合预期的内容。
这到底是什么原因,求解。

BngThea 发表于 2019-5-17 12:32:09

f2.close()

十分奇怪哦 发表于 2019-5-17 12:55:05

BngThea 发表于 2019-5-17 12:32
f2.close()

呃呃这个是忘了,不过不是这方面的原因。直接运行py文件能有内容,用idle打开run的话,file2是空白文档。

jackz007 发表于 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 , '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()

13572044595 发表于 2019-5-17 13:47:44

本帖最后由 13572044595 于 2019-5-17 13:49 编辑

十分奇怪哦 发表于 2019-5-17 12:55
呃呃这个是忘了,不过不是这方面的原因。直接运行py文件能有内容,用idle打开run的话,file2是空白文档 ...

编译器在程序运行完毕之后,会默认自动关闭文件,
你在 shell 里面运行完毕,文件没有内容,你把 shell 关闭,在看看 文件是否 有 内容`

十分奇怪哦 发表于 2019-5-17 20:01:13

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

嗯嗯试了 没有哇

十分奇怪哦 发表于 2019-5-17 20:10:44

jackz007 发表于 2019-5-17 13:24
楼主再试试这个代码,看看是否有改观

emmm 报错了,类型错误,,我还没学到,3 4行代码能解释一下嘛,,,,后面那个应该是'r+'和 ‘w+' 吧,楼主可能打错了

十分奇怪哦 发表于 2019-5-17 20:14:25

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

我在shell运行的时候,它会在shell上打印出内容。关了以后打开文件2,仍然是空白的。。。

jackz007 发表于 2019-5-18 18:42:43

本帖最后由 jackz007 于 2019-5-18 18:54 编辑

f1 = open(sys . argv , 'rt')                                  # sys . argv 就是本脚本文件的名字,'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 是什么,那就在合适的位置插入一条语句 print('sys . argv =' , sys . argv) 不就可以了?
页: [1]
查看完整版本: 关于python写入文件为空白的问题