困惑如何使用argparse

时间:2015-12-14 05:56:28

标签: python argparse

我正在尝试编写一个可以使用

从命令行运行的python脚本
python script.py --input file.txt

python script.py -i file.txt

script.py将接收文件file.txt并打开/读取。

这是我到目前为止所做的:

#!/usr/bin/python
import argparse

parser = argparse.ArgumentParser(description="I'm not sure what I should write here.")
parser.add_argument('-i','--input', help='Input file name',required=True)
args = parser.parse_args()

现在......我如何实际访问输入文件?

我想要的是写入输出文件,例如python script.py --outputfile file.csv?我不明白如何与编写文件进行交互。对不起,如果这太容易了。

2 个答案:

答案 0 :(得分:4)

很简单!

#!/usr/bin/python
import argparse

parser = argparse.ArgumentParser(description="Something like -- File reader: reads file line by line.")
parser.add_argument('-i','--input', help='Input file name',required=True)
args = parser.parse_args()

with open(args.input) as fp:
    for line in fp:
       print line

如果要将某些内容写入输入文件。以写入模式打开文件并随意写入。

with open(args.input, 'w') as fp:
    fp.write("Hello World!")

如果要编写单独的文件,请在写入模式下向argparser添加一个参数,然后写入该文件。

parser = argparse.ArgumentParser(description="Something like -- File reader/writer: reads/writes files line by line.")
parser.add_argument('-i','--input', help='Input file name',required=True)
parser.add_argument('-o','--output', help='Output file name',type=argparse.FileType('w'),required=True)
args = parser.parse_args()

with open(args.input) as fp:
    for line in fp:
        print line

with open(args.output) as fp:
    fp.write("Hello World!")

答案 1 :(得分:1)

您可以使用以下内容访问-i之后用户输入的字符串:

args.input

例如:

argp_test.py  -i my_file_name.txt

现在:

print(args.input)

打印:

my_file_name.txt

下一步是阅读文件内容:

with open(args.input) as fobj:
    for line in fobj:
          # do something with this line

顺便说一下,你在这行中遇到语法错误:

parser = argparse.ArgumentParser(description='I'm not sure what I should write here.')

它应该是这样的:

parser = argparse.ArgumentParser(description="I'm not sure what I should write here.")

在字符串中使用'时,需要在字符串的结尾处使用"。所以使用:

"I'm not"

而不是:

'I'm not'