sys.argv是list结构,可以直接赋值
如程序入口是main.py, 正常的命令行模式为python main.py arg1 arg2 arg3。
则sys.argv为[‘main.py’,‘arg1’,‘arg2’,‘arg3’]
可以有三种方式在不改变源码的基础上使用sys.argv。
1、使用vscode配置文件,在lauch.json中,添加args参数
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args":["User In Lauch File"]
}
]
}
2、直接赋值
sys.argv=[...]
3、使用input()输入并赋值给sys.argv。
可以直接令sys.argv=[‘main.py’,‘arg1’,‘arg2’,‘arg3’],这样方便打断点调试,如在VSCODE之中,也可以结合input()动态指定。
args=input().split(" ")
示例代码:
import sys
def hello():
print("Hello,",sys.argv[1])
if __name__=="__main__":
print("1.Testing command line:")
print(sys.argv)
hello()
print()
print("2.Testing assing value to sys.argv in python code:")
name='User In Code'
sys.argv=["main.py",name]
print(sys.argv)
hello()
print()
print("3.Testing input():")
sys.argv=input("eg. main.py name:").split(" ")
print(sys.argv)
hello()
VSCODE中按F5进入调试模式,输出为:
1.Testing command line:
['g:\\XML\\github\\pylint-main\\pylint\\pyreverse\\test.py', 'User In Lauch File']
Hello, User In Lauch File
2.Testing assing value to sys.argv in python code:
['main.py', 'User In Code']
Hello, User In Code
3.Testing input():
eg. main.py name:main.py User3
['main.py', 'User3']
Hello, User3