Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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 舍邦线的线号是否重要?_Python_Command Line Interface_Shebang - Fatal编程技术网

Python 舍邦线的线号是否重要?

Python 舍邦线的线号是否重要?,python,command-line-interface,shebang,Python,Command Line Interface,Shebang,我有一个简单的cli将时间戳转换为人类可读的日期时间。出于某种原因,当我尝试调用它时,我会从imagemagick调用import命令 > ts 1400029200000 Version: ImageMagick 6.8.7-7 Q16 x86_64 2013-11-27 http://www.imagemagick.org Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC Features: DPC Modules De

我有一个简单的cli将时间戳转换为人类可读的日期时间。出于某种原因,当我尝试调用它时,我会从imagemagick调用
import
命令

> ts 1400029200000
Version: ImageMagick 6.8.7-7 Q16 x86_64 2013-11-27 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules
Delegates: bzlib freetype jng jpeg ltdl png xml zlib

Usage: import [options ...] [ file ]
下面是我的剧本

1
2 #!/usr/bin/env python
3
4 import argparse
5 from datetime import datetime
6
...
12
16     time = args.time
...
22     print(datetime.utcfromtimestamp(time))
...
25
26 if __name__ == '__main__':
27     main()
28
当我把shebang移到第一行时,我得到了正确的结果

> ts 1400029200000
2014-05-14 01:00:00    

“shebang”必须是第一行,因为它由内核解释,内核查看可执行文件开头的两个字节


如果这些是
#行的其余部分被解释为要运行的代码以及该程序可用的脚本文件。现在你有了一个新行,然后是行中的人物。

我相信是这样。它告诉操作系统如何处理这个脚本,所以它应该出现在第一行,否则在调用脚本时必须指定shell。我明白了。那么,如果没有shebang行,脚本是否默认作为bash脚本执行?如果是这样,有没有办法更改默认设置?@KevinSLin我恐怕不知道,我不是一个活跃的Linux用户。你应该问一个不同的问题来获得这方面的专业知识。@KevinSLin如果没有shebang行(在第一行),那么它实际上是由你用来运行命令的任何shell执行的-在你的例子中是
bash
。是一个属于
imagemagick
的程序。您可以将shell/usr/bin/python设置为,但您会发现普通shell任务变得更加困难。把你的头发放在第一行。