python - 是否可以输入用户选择的输入和输出文件

python - is it possible to enter user-chosen input and output files

我是python的新手,还请多多包涵

不知道怎么形容,就举个例子吧

python CODE.py -i1 input1.txt -i2 input2.txt -o output.txt

python可以做到这样吗?查了好久没找到答案

谢谢!

正如 thefourtheye 所说,您可以使用 argparse 模块。但是如果你想要简单的解决方案,只需将 2 个输入和输出文件路径作为参数传递给你的可执行文件,然后使用 sys.argv 将它们按顺序放入你的程序中。 sys.argv[0] 是您的应用程序名称,sys.argv[1] 是第一个输入文件路径,sys.argv[2] 是第二个输入文件路径,sys.argv[3] 是输出文件路径。

import sys
input1 = sys.argv[1]
input2 = sys.argv[2]
output = sys.argv[3]

现在您可以像下面这样调用了:

python my_app.py /path/to/input1.txt /path/to/input2.txt /path/to/output.txt

是的,您可以在代码中使用系统参数。

以下代码片段可能会帮助您解决问题

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('inFile', nargs=2, help="Choose in file to use")    
parser.add_argument('outFile', nargs=1, help="Choose out file to use")  
args=parser.parse_args()                                                 
your_fun_call( args.inFile , args.outFile[0] ) 

乍一看可能有点奇怪,但你可以参考这篇文档 argparse

注意: infile 参数的 nargs 为 2,因为您需要两个输入 文件( nargs 代表参数数量)

而不只是链接到 argparse module or the argparse tutorial, 其他受访者可能应该刚刚向您展示了如何操作:

import argparse

# Build the parser
p = argparse.ArgumentParser(prog='CODE.PY')
p.add_argument('-i1', type=argparse.FileType('r'),
               metavar='sourcefile1', help='First input file')
p.add_argument('-i2', type=argparse.FileType('r'),
               metavar='sourcefile2', help='Second input file')
p.add_argument('-o', type=argparse.FileType('w'),
               metavar='destfile', help='Destination filename')

# Parse sys.argv
ns = p.parse_args()

# Use the files
data1 = ns.i1.read()
data2 = ns.i2.read()
result = data1[:10] + data2[:10]
ns.o.write(result)

argparse 的一个不错的功能是它不仅可以构建解析器,还可以为命令行帮助创建一个不错的选项:

$ python CODE.PY -h

usage: CODE.PY [-h] [-i1 sourcefile1] [-i2 sourcefile2] [-o destfile]

optional arguments:
  -h, --help       show this help message and exit
  -i1 sourcefile1  First input file
  -i2 sourcefile2  Second input file
  -o destfile      Destination filename