python - 为什么 "file"命令对 .py 文件感到困惑?

标签 python

我编写了几个 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/

相关文章:

python - 在 python 中使用多个不互斥的 If

php - Python 扭曲渲染 PHP

python - Django |在模板中对字典进行排序

python - 以特定顺序解压列表列表中的元组

python - Matplotlib:将图形向右移动

python - 根据多个百分比因素计算产品价格

python - 菜单和工具栏

python - pymongo 没有关闭连接

python - 使用 PySpark 从 Amazon S3 读取文本文件

python - 使用 pandas 识别最近的物体