我试图通过以下命令运行我的小python脚本:
./pdweb_convert.py -i /path_to_file/input_file_name -o /path_to_file/output_file_name
这是我的代码:
import sys
inputfile = sys.argv[1]
outputfile = sys.argv[2]
with open(inputfile, 'r') as i, open(outputfile, 'w') as o:
o.seek(0)
o.truncate()
for line in i:
if '0x' in line:
new_line = line[9:50]
new_line = new_line.strip().replace(' ', '').replace('\n', '')
try:
new_line = bytearray.fromhex(new_line).decode("ascii")
except Exception:
new_line = ''
o.write(new_line)
else:
o.write(line)
如果我尝试运行程序,则在“ inputfile = sys.argv [1]”行上出现“ IndexError:列表索引超出范围”错误。
任何想法如何解决此问题并通过键入上述命令使我的程序正常运行,其中pdweb_convert是我的脚本,输入文件将类似于input.txt,输出文件的任何名称,因为它将随后在我的命令中创建。
如果路径不存在或输入文件不存在,又如何使它显示警告消息,如我之前所说,我希望使用我给它的名称自动生成(创建)输出文件命令行,例如:
pdweb_convert.py -i C:\Users\Work\Documents\input.txt -o C:\Users\Work\Documents\outputexample.txt
我该如何在脚本中编写代码?我今天早上开始用Python编程,所以我是个超级初学者。谢谢!
答案 0 :(得分:1)
Python有一个名为optparse的库,可以轻松实现
您可以像这样使用它:
#!/usr/bin/python
import optparse
parser = optparse.OptionParser()
parser.add_option('-i', help='arguments', dest='infile', action='store')
parser.add_option('-o', help='arguments', dest='outfile', action='store')
(opts, args) = parser.parse_args()
print(opts)
输出:
{'infile': 'infile.txt', 'outfile': 'outfile.txt'}
因此,您只需抓住opts['infile']
和opts['outfile']
并检查文件系统中是否存在这些文件。
答案 1 :(得分:0)
python ./pdweb_convert.py -i /path_to_file/input_file_name -o /path_to_file/output_file_name
(我假设您还在此命令的开头也编写了python。)
问题是您的sys.argv
返回了一个五个元素的列表,而您正在调用1
的{{1}}和2
索引, -i
。取而代之的是,您应该调用/path_to_file/input_file_name
和2
索引。当我运行您的代码时,它没有引发任何列表错误,但在逻辑上却出错了
4