所以我想在一个文本文件中读取,然后使用其中一些文件写入另一个在同一目录中不存在的文件。因此,例如,如果我有一个名为text.txt的文件,我想编写一个读取它的脚本,然后创建另一个文件text2.txt,其中一些内容由text.txt中的内容确定。
要读取我正在使用命令的文件,
with open(inpath, 'r') as f:
...
但是,创建新文件并开始写入文件的首选方法是什么?如果我不得不猜测,我认为这将是
with open(inpath, 'r') as f:
outtext = open(outpath, 'w')
...
其中变量outpath存储要写入的文件的目录。如果我理解了这一切,如果目录outpath碰巧存在,运行此脚本会破坏它或至少附加到它。但如果它不存在,那么Python将创建该文件。那是准确的吗?是否有更好,更优雅的方式来做到这一点?
答案 0 :(得分:0)
我相信inpath
和outpath
是绝对路径。所以你做不到:
with open(inpath, 'r') as f:
...
它会抛出IOError
异常。 open
方法需要文件路径,但由于您提供了目录路径,因此会发生异常。这同样适用于outpath
。现在让我们假设inpath
和outpath
的值为:
input_path = '/Users/avi/inputs'
output_path = '/Users/avi/outputs'
现在,要阅读文件,您可以这样做:
input_file_path = os.path.join(input_path, 'input.txt')
input_file_path
现在是/Users/avi/inputs/input.txt
并打开这个:
with open(input_file_path, 'r') as f:
...
现在回到第二个问题,是的,如果文件已经存在,python将覆盖。如果没有,则会创建一个新的。因此,您可以先检查文件是否存在。如果是,那么您可以创建一个新的:
output_path_file = os.path.join(output_path, 'output.txt')
if os.path.isfile(output_path_file):
# file already exists
# do something else like create another file
output_path_file = os.path.join(output_path, 'new_output.txt')
# now write to output file
with open(output_file_path, 'w') as f:
...