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'
这是代码本身
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)
解决方案
我看到了几个问题。
在
for eachline in...
您尝试重新打开尚未关闭的文件的块中。with
当您打开它们进行编写时添加一个,与您with
第一次使用上下文管理器的方式相同。否则,您每次写一行时都会尝试打开文件。不会像第
for eachline in secondfiledata
一个那样追加 - 所以如果您成功关闭文件,您只需继续覆盖直到最后一行。您使用
readlines()
instad of使这变得过于复杂read()
。这假设您正在读取和写入文件中的文本。如果是二进制文件呢?
我建议仔细阅读https://docs.python.org/3.3/tutorial/inputoutput.html#reading-and-writing-files
推荐阅读
- optimization - 为什么写入内存比读取 GPU 需要更长的时间?
- android - 在 Android 中使用标准 ISO/IEC 19794-2 注册指纹
- r - 如何在factoextra或ggplot2中设置x轴的总长度
- r - R:使用“lm”拟合线性模型时的对比错误
- angularjs - AngularJS路由测试未知提供者
- sql - 在 SQL Server 中查找重复记录,而且还返回每个记录的唯一键集
- ssl - 如何在树莓派上验证 openssl 证书?
- linux - 用于编辑目录中所有文件的 bash 脚本
- kernel - Jupyter Notebook 中的 SageMath 内核死亡
- python - Pandas-如何计算前滚 10/后滚 10 平均绝对偏差?