我想构建一个函数,要求用户输入源文件名和目标文件名;打开文件,逐行循环遍历源文件的内容,将每个文件写入目标文件;然后关闭这两个文件。确保所有文件都在try块中发生。如果发生IOError,脚本应该打印一条消息,说明使用其中一个文件时出错,并要求用户再次输入文件名。以下是我到目前为止的情况:
while True:
try:
file = open(filename)
line = file.readline()
while line != "":
print(line)
line = file.readline()
file.close()
break
except IOError:
print("There was a problem accessing file '" + filename + "'." + \
"Please enter a different filename.")
filename = input("> ")
但是,我不知道如何询问用户1.)用户输入2.)询问文件名和目标文件名3.)将每个源写入目标文件。如果可以帮助..
答案 0 :(得分:0)
我可以告诉你一些事情。
做输入
inputFileName = str(raw_input("Enter the input file: "))
outputFileName = str(raw_input("Enter the output file name: "))
另外,要了解使用文件,您可以查看好的教程here。 最后,你不应该在while循环中运行你的file = open(filename)。只应在循环中读取行。
答案 1 :(得分:0)
您只需要在现有代码中添加一些内容:
in_filename = input('input from filename: ')
ou_filename = input('output to filename: ')
while True:
try:
infile = open(in_filename)
oufile = open(ou_filename, 'w')
line = infile.readline()
while line != "":
# print(line)
oufile.write(line)
line = infile.readline()
infile.close()
oufile.close()
break
except IOError:
print("There was a problem accessing file '" + in_filename + "'." + \
"or maybe '" + ou_filename + "'." + \
"Please enter different filenames.")
in_filename = input('input from filename: ')
ou_filename = input('output to filename: ')
当然,还有很多的东西需要改进 - 例如,通过坚持所有内容都在一个try / except语句中,你不知道,在错误中消息,这两个文件中的哪一个出了问题。
但至少我添加了in_
和ou_
前缀来区分输入和输出,并避免使用内置名称file
作为变量名称(践踏)对于初学者而言,内置名称是一个臭名昭着的陷阱,它没有任何问题......直到它突然发生: - )。
答案 2 :(得分:0)