您好我正在寻找一种方法来确定使用Python在我的整个系统(Linux)中打开哪些文件.我找不到任何这样做的模块.
或者也许唯一的方法是使用命令lsof?
谢谢!
我搜索中断 try 并进入 except 的方法(此示例在中断行中有一个语法错误)
def fool():
return 0
try:
var = fool()
if var == 0:
pass # from here jump to except
except:
fool2()
Run Code Online (Sandbox Code Playgroud)
我想到的另一种方式是:
var = fool()
if var == 0:
fool2()
Run Code Online (Sandbox Code Playgroud)
另一个更Pythonic的解决方案?
通过一个命令linux(lsof),我在表中获得了一系列数据:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd unknown /proc/1/cwd (readlink: Permission denied)
init 1 root rtd unknown /proc/1/root (readlink: Permission denied)
python 30077 user1 txt REG 8,1 2617520 461619 /usr/bin/python2.6
Run Code Online (Sandbox Code Playgroud)
正如我们可以看到一些地方是空的,我正在寻找将每个单元格分成一个列表(每行一个列表)的方法,我试着用这种方式:
lsof_list = commands.getoutput('lsof | sed \'1d\'')
k = 1
list_lsof = {}
j = 1
apps = {}
for line in lsof_list.splitlines():
list_lsof[k] = line
print(list_lsof[k])
for apps[j] in list_lsof[k].split():
#print(' app ', list_lsof[j])
j += 1
#print(apps[k])
if j == 9: …Run Code Online (Sandbox Code Playgroud) 我想用lsof获得不同的结果,我的意思是只想显示一些列,是否可能?
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,1 4096 2 /
init 1 root rtd DIR 8,1 4096 2 /
init 1 root txt REG 8,1 36992 139325 /sbin/init
init 1 root mem REG 8,1 14696 190970 /lib/libdl-2.11.3.so
init 1 root mem REG 8,1 1437064 190958 /lib/libc-2.11.3.so
Run Code Online (Sandbox Code Playgroud)