编写一个程序,提示输入两个文件名并交换两个文件的内容

2024-10-04 05:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到一些错误,我不知道如何修复与下面的程序,这是它的说明。 “编写一个程序,提示输入两个文件名并交换两个文件的内容。您的程序应该足够健壮,如果文件不存在,程序将重新提示。“

下面是我在运行它时遇到的错误。我还显然需要使它重新提示用户,如果文件找不到。我尝试了一些方法来让它工作,但也无法让它正常工作。在

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'

这是代码本身

^{pr2}$

Tags: 文件用户inpy程序内容文件名错误
2条回答

我看到了一些问题。在

  1. for eachline in...块中,您试图重新打开尚未关闭的文件。在打开它们进行写入时添加一个with,方法与第一次使用with上下文管理器相同。否则,每次写一行时都要打开文件。

  2. for eachline in secondfiledata不像第一个那样追加,如果你成功地关闭了文件,你只需要继续覆盖直到最后一行。

  3. 通过使用readlines()instad of read(),这会使这一过程过于复杂。

  4. 这假设您正在读取和写入文件中的文本。如果是二进制文件呢?

我建议你仔细阅读https://docs.python.org/3.3/tutorial/inputoutput.html#reading-and-writing-files

这是个打字错误,是缩进。在

行:

        dataobject = DataTransferinFiles()

应该是:

^{pr2}$

所以完整的代码:

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)

相关问题 更多 >