【发布时间】:2019-01-17 07:48:55
【问题描述】:
我有一个 python 脚本,它删除了由-i 参数给定的文件的重复文件。所以就像-i input.txt。
我想要-o 参数,即输出文件名,如下所示:input-file-name-without-extension_dupsremoved.txt。喜欢-o input_dupsremoved.txt。
removeDups.py
import optparse
def removeDups(inputfile, outputfile):
file1 = open(inputfile, "r")
lines = file1.readlines()
file1.close()
out = open(outputfile, "w")
out.writelines(uniquelines(lines))
out.close()
def uniquelines(lineslist):
unique = {}
result = []
for item in lineslist:
if item.strip() in unique: continue
unique[item.strip()] = 1
result.append(item)
return result
def main():
parser = optparse.OptionParser('usage %prog ' +\
'-i <inputfile> -o <outputfile>')
parser.add_option('-i', dest='inputfile', type='string',
help='specify your input file')
parser.add_option('-o', dest='outputfile', type='string',
help='specify your output file')
(options, args) = parser.parse_args()
inputfile = options.inputfile
outputfile = options.outputfile
if (inputfile == None) or (outputfile == None):
print (parser.usage)
exit(1)
else:
removeDups(inputfile, outputfile)
if __name__ == '__main__':
main()
我目前正在使用此批处理文件来执行此操作,但批处理文件不正确。
@echo off
set /p input= Input file:
set output= output.txt
set dupsremoved= %input%_dupsremoved.txt
script1.py -i %input% -o %output%
script2.py -i %output% -o %dupsremoved%
del %output%
这可以通过 Gerhard Barnard 的回答来解决:
@echo off
setlocal enabledelayedexpansion
set /p "input=Input file: "
set "output=output.txt"
set "ext=%input:*.=%
set "input=!input:.%ext%=!
set "dupsremoved=!input!_dupsremoved.txt"
script1.py -i %input% -o %output%
script2.py -i %output% -o %dupsremoved%
del %output%
【问题讨论】:
-
为什么要使用批处理文件呢?为什么不是 Python?
-
好主意!没想到。你知道怎么做吗?
-
@aria。试一试,当你碰壁时问另一个问题
标签: python batch-file