我在一些 python 逻辑上遇到了一些问题。 不确定这是否可能,但如果 bash 可以的话,我想这在所有其他语言中都是可能的。
如果没有命令行参数传递给脚本,我想使用默认函数参数:
#!/usr/bin/env python3
import sys
def get_file_name(filename: str = "watched_movies"):
if sys.argv[1]:
filename = sys.argv[1]
return filename
return filename
print(get_file_name())
我的代码可能是错误的,因为我只是做了一些探索。
我收到错误:
Traceback (most recent call last):
File "/home/os/scripts/python/./movies.py", line 11, in <module>
print(get_file_name())
File "/home/os/scripts/python/./movies.py", line 6, in get_file_name
if sys.argv[1]:
IndexError: list index out of range
尝试一下:
#!/usr/bin/env python3
import sys
def get_file_name(filename: str = "watched_movies"):
if len(sys.argv) > 1 and sys.argv[1]:
filename = sys.argv[1]
return filename
return filename
print(get_file_name())
一行:
def get_file_name(filename: str = "watched_movies"):
return filename if len(sys.argv) == 1 else sys.argv[1]
#!/usr/bin/env python3
import sys
def get_file_name(filename: str = "watched_movies"):
if len(sys.argv) < 2:
print("no file name!")
return
if sys.argv[1]:
filename = sys.argv[1]
return filename
return filename
print(get_file_name())
输出
python main.py
no file name!
None
python main.py test
test
sys.argv 是一个数组,如果没有参数则长度为 1(只有一个元素),索引 1 超出范围。