Android 上的 Python 子进程:/bin/sh: 找不到 ls
我在安卓上运行的是一个旧版的Python,这个版本在处理大于4GB的文件时会给出错误的文件大小。所以我尝试写了一个解决办法来获取正确的文件大小,代码如下:
def getsize_workaround( filename ):
import subprocess as s
output = s.Popen("ls -l " + filename, shell=True, executable="/system/bin/sh", stdout=s.PIPE).communicate()[0]
size = long(re.split(r'\s+', output)[3])
return size
当我用一个简单的Python脚本调用这个解决办法时,它运行得很好:
print(getsize_workaround(path))
但是,当我在我的NZBGet VideoSort脚本中使用它时,它找不到ls命令,并在这行代码出错了:output = s.Popen("ls -l " + filename, shell=True, executable="/system/bin/sh", stdout=s.PIPE).communicate()[0]
,错误信息是:/bin/sh: ls: not found。(这个函数在第824行被调用,具体可以查看下面的Dropbox链接)。
我完全不知道为什么它找不到ls命令,任何帮助都非常感谢。你可以在这里找到VideoSort脚本:https://db.tt/oM3U5gZR。
2 个回答
0
你也可以在你的bash脚本里添加一个别名,这样就可以指定你想用的Python版本。
alias python=<你想用的Python版本>
1
在使用NZBGet的时候,PATH变量没有包含正确的目录。通过手动设置os.environ['PATH']来解决了这个问题。感谢abernert提供的建议。