我想将输出保存在与输入相同的位置,但使用不同但仍相关的名称。
最小示例: 此脚本在输入文件中搜索包含字符串“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)
有什么建议吗?
答案 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