首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从os命令python创建列表

从os命令python创建列表
EN

Stack Overflow用户
提问于 2016-11-09 11:17:41
回答 5查看 684关注 0票数 0

我正在尝试将file.txt的内容存储到列表中

代码语言:javascript
复制
cat file.txt
dm-3
dm-5
dm-4
dm-2

这是我的剧本:

代码语言:javascript
复制
#!/usr/bin/python
import os
import json
drives = os.system("cat file.txt")
for i in drives:
  print(i)

我得到了以下错误:

代码语言:javascript
复制
   Traceback (most recent call last):
  File "./lld-disks2.py", line 5, in <module>
    for i in drives:
  TypeError: 'int' object is not iterable
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-11-09 11:52:04

如果您想返回命令输出,请使用popen而不是os.system

代码语言:javascript
复制
import subprocess

proc = subprocess.Popen(["cat", "file.txt"], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
print "output:", out

但我认为@Fejs的答案更好。

票数 2
EN

Stack Overflow用户

发布于 2016-11-09 11:19:43

os.system返回命令的退出状态代码,而不是它的输出。

相反,您应该使用内置的open

代码语言:javascript
复制
with open('file.txt') as f:
     list_of_lines = f.readlines()
票数 2
EN

Stack Overflow用户

发布于 2016-11-09 11:19:35

来自文档

os.system(command) 在子subshell中执行命令(字符串)。这是通过调用Standard函数系统()来实现的,并且具有相同的限制。对sys.stdin等的更改没有反映在已执行命令的环境中。 在上,返回值是进程的退出状态,该进程以指定的等待()格式编码。注意,POSIX没有指定C system()函数返回值的含义,因此Python函数的返回值与系统有关。

您可能应该只使用open文件和readlines()所以问题很好地证明了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40505700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档