2

我正在尝试将现有文件的每一行写入两个新文件。基本上这将复制文件。“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)
4

2 回答 2

4

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

尝试使用with,opens并关闭文件句柄。

with open(old,"w") as oldMaster,open(new,"w") as newMaster:
于 2013-10-08T02:02:57.623 回答
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.

于 2013-10-08T02:43:02.830 回答