试图在目录中的所有文件上运行python程序需要扫描并使用每个文件名
我编写了一个非常基本的程序来删除文本文件中的引号。我有大约50个文件,我需要运行,而宁愿运行一个目录中的所有文本文件的程序 我面临的一个大问题是,我需要一次读取一个文件,一旦剥离试图在目录中的所有文件上运行python程序需要扫描并使用每个文件名,python,directory,filenames,Python,Directory,Filenames,我编写了一个非常基本的程序来删除文本文件中的引号。我有大约50个文件,我需要运行,而宁愿运行一个目录中的所有文本文件的程序 我面临的一个大问题是,我需要一次读取一个文件,一旦剥离“,文件的所有内容就会输出到一个使用输入文件名的新文件 例如: 正如我现在看到的,程序将输入文件名作为参数,并将输出文件名创建为infle name+\u output.txt。如何使它处理目录中的所有文本文件,但按我希望的方式命名文件 我的节目: import sys if len(sys.argv) <2:
“
,文件的所有内容就会输出到一个使用输入文件名的新文件
例如:
正如我现在看到的,程序将输入文件名作为参数,并将输出文件名创建为infle name+\u output.txt
。如何使它处理目录中的所有文本文件,但按我希望的方式命名文件
我的节目:
import sys
if len(sys.argv) <2:
print "Usage: python %s requires input file" % (sys.argv[0])
sys.exit()
infile = sys.argv[1]
outfile = infile.split(".")[0] + "_output.txt"
INFH = open(infile)
OFH = open(outfile, "w")
print "Output File = %s" % (outfile)
for line in INFH:
line=line.strip('\n').replace('\"','')
print >> OFH, line
INFH.close()
导入系统
如果len(sys.argv)>OFH,则行
通知关闭()
您可以这样做:
import sys, os
if len(sys.argv) < 2 and not os.path.isdir(sys.argv[1]):
print("Usage: python {} directory".format(sys.argv[0]))
sys.exit()
for entry in os.listdir(sys.argv[1]):
if os.path.isfile(entry):
infile = entry
outfile = infile.split(".")[0] + "_output.txt"
INFH = open(infile)
OFH = open(outfile, "a")
print("Output File = {}".format(outfile))
for line in INFH:
line = line.strip('\n').replace('\"','')
OFH.write(line)
INFH.close()
导入系统,操作系统
如果len(sys.argv)<2而不是os.path.isdir(sys.argv[1]):
打印(“用法:python{}directory.format(sys.argv[0]))
sys.exit()
对于os.listdir(sys.argv[1])中的条目:
如果os.path.isfile(条目):
填充=入口
outfile=infle.split(“.”[0]+“_output.txt”
INFH=打开(填充)
OFH=打开(文件外“a”)
打印(“输出文件={}”。格式(输出文件))
对于INFH中的行:
line=line.strip('\n')。替换('\','')
OFH.写入(行)
通知关闭()
只需添加一个目录而不是一个文件作为参数。奇怪的缩进…我不想与stack overflow的代码块系统合作提问。为此,请使用
os.listdir(path)
和os.path.isfile(path)
。我理解使用os.listdir,但os.path.isfile有什么帮助?os.listdir(path)
返回目录中的文件和文件夹。使用os.path.isfile(path)
使舒尔成为一个文件。这将返回一个索引器:列表索引超出范围嗯,您是否使用python yourfile.py./dir/
?@cobaltcose我对代码做了一些更改,请重试。在Windows 10和Python 3.4.4下适用于我