Code:
import subprocess
def printit():
for i in range(6):
for j in range(6):
query = "select rxpkts, txpkts from ./log.csv where datapath = "+str(i)+" and port = "+str(j)
fileName = str(i)+"_"+str(j)+".csv"
with open(fileName, "w+"):
p = subprocess.Popen(["python", "q", "-H", "-d", ",", query], stdout=fileName)
printit()
Error:
$ python processLog.py
Traceback (most recent call last):
File "processLog.py", line 11, in <module>
printit()
File "processLog.py", line 9, in printit
p = subprocess.Popen(["python", "q", "-H", "-d", ",", query], stdout=fileName)
File "/usr/lib/python2.7/subprocess.py", line 702, in __init__
errread, errwrite), to_close = self._get_handles(stdin, stdout, stderr)
File "/usr/lib/python2.7/subprocess.py", line 1128, in _get_handles
c2pwrite = stdout.fileno()
AttributeError: 'str' object has no attribute 'fileno'
What could be the issue? I am using q
可能是什么问题?我正在使用q
1 个解决方案
#1
15
The stdout
argument needs a file object, not the string for the filename.
stdout参数需要一个文件对象,而不是文件名的字符串。
Try using -
尝试使用 -
import subprocess
def printit():
for i in range(6):
for j in range(6):
query = "select rxpkts, txpkts from ./log.csv where datapath = "+str(i)+" and port = "+str(j)
fileName = str(i)+"_"+str(j)+".csv"
with open(fileName, "w+") as f:
p = subprocess.Popen(["python", "q", "-H", "-d", ",", query], stdout=f)
printit()
#1
15
The stdout
argument needs a file object, not the string for the filename.
stdout参数需要一个文件对象,而不是文件名的字符串。
Try using -
尝试使用 -
import subprocess
def printit():
for i in range(6):
for j in range(6):
query = "select rxpkts, txpkts from ./log.csv where datapath = "+str(i)+" and port = "+str(j)
fileName = str(i)+"_"+str(j)+".csv"
with open(fileName, "w+") as f:
p = subprocess.Popen(["python", "q", "-H", "-d", ",", query], stdout=f)
printit()