AttributeError: object 'str' does not have attribute 'fileno'

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 problem? I am using q

+5
source share
1 answer

The stdout argument needs a file object, not a string for the file name.

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() 
+12
source

All Articles