【发布时间】:2021-04-03 18:06:38
【问题描述】:
我正在尝试通过调用我的 Python 脚本的 Bash Shell 脚本 (csv) 运行我的 Python 脚本 (csv_builder.py)。在脚本中,我请求输入文件名。
bash 脚本如下:
chmod +x D:/Users/michaeld/Python/csv_builder/csv_builder.py
python3 D:/Users/michaeld/Python/csv_builder/csv_builder.py
调用输入的 Python 脚本的开头如下:
#!/usr/bin/python
import sys
import argparse
parser = argparse.ArgumentParser(description = 'This inputs the .csv file')
parser.add_argument('--i', required = True, type = str, help = '.csv filename')
args = parser.parse_args()
csv_name = args.i
# csv_name = input('\nEnter the .csv file name: \n') This was the original input
我一直在尝试在命令行上运行,但出现错误:the following arguments are required: --i:
csv --i file_name.csv
我希望能够在运行 Bash Shell 脚本 (csv) 时在命令行中定义该文件名输入。有一个更好的方法吗?如果我可以直接输入csv file_name.csv,那就太理想了。
【问题讨论】:
-
你为什么不直接从命令行调用
python3 ...csv_builder.py --i file_name.csv?还是在shell脚本的第二行加上--i file_name.csv? -
顺便说一句,当您使用
python3 ...csv_builder.py显式调用 Python 脚本时,不需要使 Python 脚本可执行 -
我正在尝试使脚本可用于许多不同类型的 .csv 文件名。此外,为了不必每次都输入整行,我只想调用 bash 脚本名称。至于可执行文件……那什么时候需要呢?当我调出整个路径时,我只能让脚本工作。
-
当我在同一个文件夹中运行 python3 csv_builder.py --i file_name.csv 时它可以工作,但是当我尝试使用我的 bin 文件夹中的 bash 脚本时,它给了我错误。如何修复我的 bash 脚本以使用 argparse?
-
当你定义一个带有'-i'标志的参数时,你必须在命令行(或脚本调用)中使用它。文件名不够。但是您可以创建一个
positional参数。 argparse 文档应该对此很清楚。
标签: python shell input command-line argparse