我有一个.py文件,其中有一个函数,基本上将.csv文件转换为.pkl文件。从终端调用此文件时,应根据输入是否为真,在英制和公制之间转换测量值。比如说
python3 file.py imperial_units=True
或python3 file.py imperial_units=False
如果没有提供像python3 file.py
这样的参数,英制单位应该默认为True:
这是我的尝试:
import json, sys
import pandas as pd
def log_to_pickle(units):
...
if units == True: # If units == True, convert all metric to imperial
print('Imperial True')
if imperial_unit == False:
...
elif units == False: # If units == False, convert all imperial to metric
print('Imperial False')
if imperial_unit == True:
...
...
if __name__ == "__main__":
if sys.argv == True or sys.argv == '':
log_to_pickle(True)
else:
log_to_pickle(False)
我在if/elif块中添加了print语句,以查看输入是否有效。我运行了python3 file.py imperial_units=True
,结果是'Imperial False'
我做错了什么
sys.argv
提供参数列表。您可以对其进行迭代以找到包含“英制单位”的参数。然后,您可以对其进行处理以获得布尔值我会使用argparse来处理这类事情。使用布尔标志参数。我也喜欢提供一个积极的和消极的版本,以便于使用
使用argparse,您也会收到一些很好的帮助消息:
现在,您可以这样调用应用程序:
或者做负片:
如果您真的想为bool标志提供一个字符串参数,那么我将创建一个自定义方法来将字符串转换为布尔值:
示例:
这里有一些错误,但根本原因是代码没有正确使用
sys.argv
。请尝试打印sys.argv
:您需要解析命令行参数
查看^{} 包以获得更健壮的命令行参数处理
相关问题 更多 >
编程相关推荐