我编写了几个 python 模块。随机地,我在这个目录上使用了 file
,我对我所看到的感到非常惊讶。这是它认为文件的结果计数:
1 ASCII Java program text, with very long lines
1 a /bin/env python script text executable
1 a python script text executable
2 ASCII C++ program text
4 ASCII English text
18 ASCII Java program text
这很奇怪!知道发生了什么或者为什么它似乎认为 python 模块通常是 java 文件吗?
我使用的是 CentOS 5.2。
编辑 这个问题更符合我的好奇心,即为什么显然非 java 和非 c++ 程序文件被归类为此类。当然,我并不期望 file
是完美的,但对所做的选择感到惊讶。我猜它只会放弃并说出文本文件,而不是做出非常不正确的推论。
最佳答案
我刚刚进行了一次测试,在每次识别不正确的情况下,都没有 shebang 行。
对于每个包含以下内容的文件:
#!/usr/bin/env python
file
正确识别了它。
查看 magic
文件,触发识别为 Python 文件的另一件事是第一行的三重引号。
$ echo '"""' | file -
/dev/stdin: python script text executable
$ echo '#!/usr/bin/python' | file -
/dev/stdin: python script text executable
$ echo '#!/usr/bin/env python' | file -
/dev/stdin: a python script text executable
关于python - 为什么 "file"命令对 .py 文件感到困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5120412/