用Python打开文件

时间:2013-08-04 21:44:41

标签: python python-2.7 python-3.x

我目前正在通过学习Python艰难的方式工作,对我来说可能会有点快。我输入了以下代码,以及相应的文件。在py文件中,我写道:

#!/usr/bin/python

from sys import argv

script, filename = argv

txt = open(filename)

print "Here's your file %r:" % filename
print txt.read()

print "Type the filename again:"
file_again = raw_input("> ")

txt_again = open(file_again)

print txt_again.read()

为了运行它,我写道:python script.py readme.txt运行代码。

但是,我不太明白这个过程:

  • 如何#!/usr/bin/python必须位于文件顶部
  • 什么是sys import argv
  • 什么是script, filename = argv
  • .read()是内置函数吗?

4 个答案:

答案 0 :(得分:3)

  1. #!/usr/bin/python就是所谓的Shebang,这是对OS内核的暗示,它是一个Python脚本,应该使用给定的Python二进制文件执行。因此,如果您chmod +x脚本,您甚至可以使用./script.py readme.txt来调用它。

  2. from sys import argv是一个将argv模块中的sys直接导入我们的命名空间的命令。因此,我们可以使用argv来代替sys.argv。如果我们只使用一次,那么只需import sys并访问内部的所有内容可能会更好。 sys.argv。您可以在Python文档和/或教程中找到相关内容。

  3. script, filename = argv

    的简写
    script = argv[0]
    filename = argv[1]
    

    只要argv包含2个元素。您可以在Python文档和/或教程中找到相关内容。

  4. file.read()确实是内置的,但作为文件对象方法,不是作为这样的函数。

答案 1 :(得分:2)

数目:

1)#!/ usr / bin / python适用于UNIX用户,它显示了python在哪里可以找到某些文件。 (Why do people write #!/usr/bin/env python on the first line of a Python script?

2)sys import argv是参数中的文件[readme.txt](http://www.tutorialspoint.com/python/python_command_line_arguments.htm

3)script,filename = argv Script和Filename [new variables]采用argv中的值。

4)是的,.read()是一个内置函数。 (http://www.diveintopython.net/file_handling/file_objects.html

谷歌是你的朋友......

答案 2 :(得分:2)

1)类似Unix的约定。它允许在读取第一行文件后立即确定如何处理文件。

2)from sys import argv表示仅从名为argv

的模块导入sys

3)a,b = 1,2将1分配给a,将2分配给b。如果_iterable_上有RHS个对象,则此类构造是等效的:

script, filename = argv 

===

script = argv[0]
filename = argv[1]

4)是的。也许不是内置严格来说 - 它只是Python标准输入输出模块中提供的一个函数。

答案 3 :(得分:2)

#!/usr/bin/python会将你的python脚本变成可执行文件,这是一个特殊的unix技巧。可执行脚本通常以一个以字符#开头的行开头! (“hash bang”),然后是机器上Python解释器的路径。然后通过将模式更改为该特定脚本文件的+ x,您只需调用名称即可在提示符上执行它。由于不同机器的路径可能不同,因此可以使用unix“env”解决方法:     #!/ usr / bin / env python 这将允许env程序找到python解释器并执行代码

从modulename导入的东西用于导入模块,但我们只从模块sys导入“argv”属性。 From就像import一样,但在这种情况下复制模块的属性(argv)会为你做更多工作,这样它们就会成为收件人脚本中的简单变量。

script,filename = argv将分别简单地将argv [0]和argv [1]分配给脚本和文件名。

最后,file.read是文件对象的内置方法。