shell - p.stdout.read() empty when using python subprocess -
i try output of curl command using python subprocess. output empty. below source code:
def validateurl(url): p = subprocess.popen("curl", stdin = subprocess.pipe, stdout = subprocess.pipe, stderr = subprocess.pipe, shell = false) p.stdin.write("http://validator.w3.org/check?uri=" + url + "\n") p.stdin.close() stdout_data = p.stdout.read() print stdout_data result = re.findall("error", stdout_data) print result # empty here if (len(result) != 0): return 'err' else: return 'ok'
why? ps: run piece of code on mac os , use python 2.7.
drop stderr = subprocess.pipe,
, , see error message printed curl
. act accordingly fix it.
one possible reason url should specified command-line argument, , not on stdin:
p = subprocess.popen(("curl", "http://..."), stdout=subprocess.pipe)
Comments
Post a Comment