我试图打印出命令行参数,但是当我尝试有两个print语句时,我得到一个语法错误。这有什么原因吗?
这是我的终端输入:python3 test.py example_Resume.pdf softwareengineering
还有,我如何处理命令行参数之间有一个空格?
import sys
def main(argv):
{
print(f"Name of the script : {sys.argv[0]=}")
print(f"Arguments of the script : {sys.argv[1:]=}") // This line errors
}
if __name__ == "__main__":
main(sys.argv[1:])
处理命令行参数的最好方法是使用argparse
包,它负责shell注入,可选的默认参数。
文档:Argpase
这是我在项目中使用的一个示例。
import argparse
# >>>>>>>>>>>>>>>>>>>>>>> ARGUMENT PARSING <<<<<<<<<<<<<<<<<<<<<<<<<<<<
def args():
"""
Used to get the list of arguments paseed to the class
"""
parser = argparse.ArgumentParser()
parser.add_argument('-r','--raw_file',type=str,
help='It is used to get the raw input file for parsing',
required=True)
args = parser.parse_args()
return args.raw_file
def main():
# PARSED RAW FILE
raw_file=self.args()
if __name__ == '__main__':
main()
除了其他评论者指出的问题之外,你的问题还在于花括号。
我试过你的代码没有他们:
import sys
def main(argv):
print(f"Name of the script : {sys.argv[0]=}")
print(f"Arguments of the script : {sys.argv[1:]=}")
if __name__ == "__main__":
main(sys.argv[1:])
大括号在Python中有不同的含义。
关于在main中不使用参数时传递参数的问题是有效的。