无法在python中获得正确的输出

时间:2014-07-24 18:58:00

标签: python ubuntu

我刚刚开始编程,我正在使用A Byte of Python学习Python。我的模块章节有问题。我不是很了解模块,所以也许这是一个愚蠢的问题,但我复制并粘贴了输入,它返回了不同的输出。他建议的输入是

import sys

print('The command line arguments are:')
for i in sys.argv:
    print i

print '\n\nThe PYTHONPATH is', sys.path, '\n' 

这是输出:

$ python module_using_sys.py we are arguments
The command line arguments are:
module_using_sys.py
we
are
arguments


The PYTHONPATH is ['/tmp/py',
# many entries here, not shown here
'/Library/Python/2.7/site-packages',
'/usr/local/lib/python2.7/site-packages']

但是我使用相同输入的输出是不同的。这是:

pedro@pedro-Inspiron-3521:~/Desktop/python$ python modulo1.py
The command line arguments are:
modulo1.py

The PYTHONPATH is ['/home/pedro/Desktop/python', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']

据我所知,当您编写import sys时,您正在制作内置模块,该模块与系统相关的内容可供使用。我也知道for循环语句遍历一个序列,在这种情况下,序列应该是存在的命令行参数。但是,它只显示modulo1.py,这是我保存我复制和粘贴的代码的文件的名称。我真的不了解pythonpath的事情,但根据我的研究,它是可能存在模块的目录列表。我使用gedit作为文本编辑器,使用ubuntu作为os和ubuntu的终端。我做错了什么?

1 个答案:

答案 0 :(得分:2)

第一句话。

sys.argv是传递给Python脚本的命令行参数列表(https://docs.python.org/2/library/sys.html

当您运行$ python modulo1.py时,modulo1.py是您的第一个(也是唯一的)参数。这就是输出为modulo1.py的原因。 但是在你的书中,它运行$python module_using_sys.py we are arguments,这里python是调用python的推荐。 module_using_sys.py是传递给您计算机的第一个参数,we是第二个,are是第三个,arguments是最后一个参数。

for循环的作用是打印每个参数。

因此,如果您希望看到与图书中完全相同的输出,则应该:

  • 将您的.py文件重命名为与图书中相同的名称
  • 将相同的参数传递给您的控制台

第二个陈述。

请注意,您sys.path的值与您所指的图书中sys.path的值不同。这就是你看到不同输出的原因。

您对PYTHONPATH的理解通常是正确的。有关PYTHONPATH的详细信息,您可以查看以下答案:How to use PYTHONPATHthis official page