创建然后写入文件

时间:2014-10-15 00:23:11

标签: python-2.7

所以我想在一个文本文件中读取,然后使用其中一些文件写入另一个在同一目录中不存在的文件。因此,例如,如果我有一个名为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将创建该文件。那是准确的吗?是否有更好,更优雅的方式来做到这一点?

1 个答案:

答案 0 :(得分:0)

我相信inpathoutpath是绝对路径。所以你做不到:

with open(inpath, 'r') as f:
    ...

它会抛出IOError异常。 open方法需要文件路径,但由于您提供了目录路径,因此会发生异常。这同样适用于outpath。现在让我们假设inpathoutpath的值为:

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:
    ...