Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python包“导入sys”vs“从sys导入argv”_Python_Python 3.x_Packages - Fatal编程技术网

Python包“导入sys”vs“从sys导入argv”

Python包“导入sys”vs“从sys导入argv”,python,python-3.x,packages,Python,Python 3.x,Packages,我正试图在python脚本中使用“argv”。 为此,我使用以下代码: from sys import argv script, file_name = argv print(file_name) python3 e.py e.txt 这段代码运行良好 但当我使用: import sys 并尝试使用“argv”,我得到错误: 'NameError:未定义名称'argv' 我不理解这一点,因为通过将“sys”完整模块导入到我的代码中就可以使用了 你能解释一下为什么会发生这种情况吗?软件包如何工

我正试图在python脚本中使用“argv”。 为此,我使用以下代码:

from sys import argv
script, file_name = argv
print(file_name)
python3 e.py e.txt 这段代码运行良好

但当我使用:

import sys
并尝试使用“argv”,我得到错误:

'NameError:未定义名称'argv'

我不理解这一点,因为通过将“sys”完整模块导入到我的代码中就可以使用了

你能解释一下为什么会发生这种情况吗?软件包如何工作

谢谢。

@Aman,看看下面的两个代码示例

有关导入的详细信息,请查看此链接

sys_file_name.py»

导入系统

输出»

E:\Users\Rishikesh\Python3\Practice\SysFileName>python sys_file_name.py  file1.txt
sys_file_name.py file1.txt
E:\Users\Rishikesh\Python3\Practice\SysFileName>python sys_file_name2.py file2.txt
sys_file_name2.py file2.txt
系统文件名称2.py»

从系统导入argv

输出»

E:\Users\Rishikesh\Python3\Practice\SysFileName>python sys_file_name.py  file1.txt
sys_file_name.py file1.txt
E:\Users\Rishikesh\Python3\Practice\SysFileName>python sys_file_name2.py file2.txt
sys_file_name2.py file2.txt

Import sys不允许您直接访问sys本身中的任何名称 要访问这些文件,您需要使用sys作为前缀:

sys.argv
sys.exit()
如果要使用argv而不是sys.argv,请尝试

from sys import *

你是如何尝试使用argv的?您是否尝试过导入系统;脚本,file_name=sys.argv?您必须从sys导入*,或者保留当前导入sys并使用sys.argv。我不推荐第一个,因为它会导致严重的名称空间污染,或者在Python.import sys中被称为什么;printlendirsys是83岁。这是我想导入的最后一个模块。请不要这样建议。只需将脚本、文件名=argv替换为脚本、文件名=sys.argv,它就会工作。你需要完全引用。这是非常糟糕的格式。此外,您不需要在Python代码上到处都放分号。