我正在编写python脚本,在我的python脚本中,我想运行"目录中的文件列表"使用commands.getoutput,我的问题是"我在python变量中定义了目录路径,如" dir_name"。我尝试了以下。
dir_name="/user/pjanga/python_test"
index_list=commands.getoutput('ls -l',dir_name,'| 'wc -l')
错误: -
File "diii.py", line 10
index_list=commands.getoutput('ls -l',dir_name,'| 'wc -l')
^
SyntaxError: invalid syntax
你能帮帮我跑吗?
答案 0 :(得分:2)
这里有几个问题,请尝试:
index_list = commands.getoutput('ls -l ' + dir_name + ' | wc -l')
字符串连接是+
,而不是逗号,并且您的单引号数量不均匀。另请注意ls -l
之后的空格。
但是,有更好的方法可以做到这一点。首先,答案并不代表目录中的文件数量。在命令行上执行ls -l
,您将看到第一行是“total”,而不是文件名(这是历史记录,表示块的数量,并且非常无用)。
如果您使用ls
代替ls -l
,则不会遇到此问题。
但是,没有必要调用两个单独的外部程序,使用python:
import os
index_list = len([name for name in os.listdir(dir_name) ])
在这里我们调用os.listdir()
并创建一个文件名列表,然后只获取该列表中的项目数。
在python中还有其他几种方法可以做到这一点。
答案 1 :(得分:0)
在Linux机器上有不同的方法从python执行命令。
方法1:
index_list = commands.getoutput('ls -l ' + dir_name + ' | wc -l')
方法2:
import os
os.system("ls -l ' + dir_name + ' | wc -l')
方法3:
import subprocess
index_list = subprocess.check_output('ls -l ' + dir_name + ' | wc -l, shell=True)
希望它有所帮助!!