【问题标题】:Python command line arguments linuxPython 命令行参数 linux
【发布时间】:2015-08-09 12:25:48
【问题描述】:

我有这个小程序(我知道有很多错误):

#!/usr/bin/python

import os.path
import sys

filearg = sys.argv[0]

if (filearg == ""):
    filearg = input("")

else:

    if (os.path.isfile(filearg)):
        print "File exist"

    else:
        print"No file"
        print filearg
        print "wasn't found"

如果我输入python file.py testfile.txt开始它

输出总是(即使文件不存在):

File exist

如果你不知道我想从这个程序中得到什么,我想打印“文件'文件名'未找到”如果文件不存在并且如果它存在我不想打印“文件存在"

有什么解决办法吗? 谢谢

【问题讨论】:

  • 懒得调试? print filearg...

标签: python linux command-line terminal arguments


【解决方案1】:

应该是sys.argv[1] 而不是sys.argv[0]

filearg = sys.argv[1]

来自docs

传递给 Python 脚本的命令行参数列表。 argv[0] 是脚本名称(这取决于操作系统是否为完整路径名)。如果该命令是使用解释器的 -c 命令行选项执行的,则 argv[0] 设置为字符串“-c”。如果没有将脚本名称传递给 Python 解释器,则 argv[0] 为空字符串。

【讨论】:

  • 这是正确的。 sys.argv[0] 将始终存在,因为它是当前正在执行的文件(python 脚本)。第一个参数总是从 sys.argv[1] 开始。
【解决方案2】:

第一个参数始终是正在执行的文件的名称。很多编程语言都是这样,你需要使用sys.argv[1]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-20
    • 2015-06-03
    • 2019-08-05
    • 2012-04-10
    • 2018-12-17
    • 2014-05-02
    • 2016-01-03
    相关资源
    最近更新 更多