无法写入文件

时间:2013-10-08 01:59:28

标签: python

我正在尝试将现有文件的每一行写入两个新文件。 基本上这将复制文件。 “oldMaster.write(line)”返回一个错误,指出该文件不可写。 我知道我的代码很糟糕。这是一个项目,我真的卡住了。

file_str = input ("Enter a file name: ")

while True:
    try:
        file_obj = open(file_str, 'r')
        break
    except IOError:
        file_str = input("'Invalid file name' Enter a file name: ")        
prefix = input("Master File Prefix?")
old = prefix
old += ".old.txt"
new = prefix
new += ".new.txt"
oldMaster = open(old,"w")
newMaster = open(new,"w")

oldMaster = file_obj
newMaster = file_obj

for line_str in file_obj:
    line = line_str

    oldMaster.write(line)

2 个答案:

答案 0 :(得分:4)

您没有关闭文件,您必须发送commit信号才能写入文件。

尝试使用withopens并关闭文件句柄。

with open(old,"w") as oldMaster,open(new,"w") as newMaster:

答案 1 :(得分:0)

在您的代码中,file_obj仅存在于while中。尝试在while之后打印其值。

然后打开文件后:

>>> oldMaster = open('\users.csv',"w")

看看oldMaster等于:

>>> oldMaster
<_io.TextIOWrapper name='\users.csv' mode='w' encoding='cp1251'>

然后你用变量oldMaster覆盖file_obj,它有一些值,但没有文件:

>>> oldMaster='smthelse'
>>> oldMaster
'smthelse'

所以oldMaster包含smthelse,而不是文件。

我认为,您应该删除while