我遇到一些错误,无法弄清楚如何用下面的程序修复,这里是它的说明。 “写一个程序,提示输入两个文件名并交换两个文件的内容。您的程序应足够健壮,如果文件不存在,该程序将重新提示。”
以下是我尝试运行它时遇到的错误。如果找不到文件,显然我也仍然需要重新提示用户。我尝试了一些方法使其正常工作,但也无法使其正常工作。
Traceback (most recent call last):
File "C:\Users\istal\Desktop\6.2.py", line 30, in <module>
dataobject.transfer(firstfilename,secondfilename)
File "C:\Users\istal\Desktop\6.2.py", line 5, in transfer
with open(firstfilename,'r')as filedata:
FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/istal/Desktop/python/testone.tx'
这是代码本身
class DataTransferinFiles():
def transfer(self,firstfilename,secondfilename):
print("your first file is=",firstfilename);
print("your second file is =", secondfilename)
with open(firstfilename,'r')as filedata:
firstfiledata= filedata.readlines()
print()
print("1st file reading complete")
print()
with open(secondfilename, 'r')as filedata:
secondfiledata=filedata.readlines()
print("2st file reading complete")
for eachline in firstfiledata:
filesecond = open(secondfilename,'a')
filesecond.write("/n"+eachline+ "/n")
print ("1st file transfered in to second file")
for eachline in secondfiledata:
filefirst = open(firstfilename)
filefirst.write("\n"+eachline+ "\n")
print ("second file transfered in to first file")
dataobject = DataTransferinFiles()
firstfilename = input("enter first file name for transfer")
secondfilename = input("enter second file name for transfer")
dataobject.transfer(firstfilename,secondfilename)
答案 0 :(得分:0)
这是缩进的错字。
该行:
dataobject = DataTransferinFiles()
应该只是:
dataobject = DataTransferinFiles()
完整的代码:
class DataTransferinFiles():
def transfer(self,firstfilename,secondfilename):
print("your first file is=",firstfilename);
print("your second file is =", secondfilename)
with open(firstfilename,'r')as filedata:
firstfiledata= filedata.readlines()
print()
print("1st file reading complete")
print()
with open(secondfilename, 'r')as filedata:
secondfiledata=filedata.readlines()
print("2st file reading complete")
for eachline in firstfiledata:
filesecond = open(secondfilename,'a')
filesecond.write("/n"+eachline+ "/n")
print ("1st file transfered in to second file")
for eachline in secondfiledata:
filefirst = open(firstfilename)
filefirst.write("\n"+eachline+ "\n")
print ("second file transfered in to first file")
dataobject = DataTransferinFiles()
firstfilename = input("enter first file name for transfer")
secondfilename = input("enter second file name for transfer")
dataobject.transfer(firstfilename,secondfilename)
答案 1 :(得分:0)
我看到几个问题。
在for eachline in...
块中,您尝试重新打开尚未关闭的文件。打开with
进行写操作时,添加一个with
上下文管理器,方法与第一次使用for eachline in secondfiledata
上下文管理器相同。否则,您每次写一行时都会尝试打开文件。
readlines()
不会像第一个那样追加-因此,如果您成功关闭文件,则只需覆盖直到最后一行。
您通过使用read()
的{{1}} instad使此过程变得过于复杂。
这假定您正在文件中读写文本。如果是二进制文件怎么办?
我建议仔细阅读https://docs.python.org/3.3/tutorial/inputoutput.html#reading-and-writing-files