初学者Python:如何在同一位置保存输出并使用不同的名称?

时间:2014-03-07 13:35:49

标签: python logging output

我想将输出保存在与输入相同的位置,但使用不同但仍相关的名称。

最小示例: 此脚本在输入文件中搜索包含字符串“NFS”的行。然后,它将结果打印到另一个文件。 我想将打印结果保存到与输入文件相同位置的输出文件中,但使用不同的名称,如“inputfilename.out.csv”。

以下是代码:

from __future__ import print_function
import sys
fname = sys.argv[1] 

out = open(fname.out.csv, "w") #this doesn't work but this is the idea

with open(fname) as file:
    reader = file.readlines()
    for line in reader:
        if "NFS" in line:
            print(line, file = out)

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以使用os.path.splitext()来提取扩展程序:

import os

name, ext = os.path.splitext(fname)
output_filename = name + ".out" + ext

或者如果您想完全更改名称,可以使用os.path.dirname()获取父目录:

import os

dirpath = os.path.dirname(fname)
output_filename = os.path.join(dirpath, "outputfile.txt")

答案 1 :(得分:0)

使用连接将“.out.csv”添加到字符串的末尾。

out = open(fname + ".out.csv", "w")

如果输入文件名是“inputfilename”,则输出将为“inputfilename.out.csv”。如果输入文件名已经具有扩展名,则这可能是不期望的行为。然后“inputfilename.csv”将变为“inputfilename.csv.out.csv”。在这种情况下,您可能希望使用os.path来构造新名称。

import os.path
filename = "inputfilename.csv"
root, extension = os.path.splitext(filename)
output_filename = root + ".out" + extension
print output_filename

结果:

inputfilename.out.csv