我正在尝试将现有文件的每一行写入两个新文件。 基本上这将复制文件。 “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)
答案 0 :(得分:4)
您没有关闭文件,您必须发送commit
信号才能写入文件。
尝试使用with
,opens
并关闭文件句柄。
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
。