我有一个Python脚本,尝试使用扩展名" .csv"来发布某个目录中的所有文件。到URL,然后打印结果(使用请求和全局):
import requests, glob
text_files = glob.iglob("./user/Documents/folder/folder/*.csv")
url = 'http://myWebsite.com/extension/extension/extension'
for data in text_files:
current_file = open(data)
r = requests.post(url, files=current_file)
print r.text
但是,即使通过cURL在终端中发布相同的文件也会生成特定于服务器的输出,也不会打印任何内容。我无法弄清楚为什么,但我猜我在某种程度上错误地实现了glob。
答案 0 :(得分:0)
没有打印的原因很简单
您正在发布文件,它已发布,但服务器端是否有任何脚本可能会生成任何响应文本?
服务器端的脚本可能只接受该文件并通过响应HTTP 200 OK告诉您一切正常。请注意,HTTP 200 OK不属于r.text
执行简单测试:使用curl
从命令行发布文件,或者按请求发布一个文件,如果确实有一些响应,请查看。很可能,(自然)没有回复文本。
顺便说一句,你打算在打开它们之后关闭文件:
for data in text_files:
with open(data) as current_file:
r = requests.post(url, files=current_file)
print r.text
答案 1 :(得分:0)
通过反复试验修复。如果我错误地回答了我自己的问题(就礼仪而言,那就是道歉)我会道歉并且会尽力在必要时给予信任。感谢@Martijn Pieters建议目录路径出错。去了.csv文件的位置,并通过"获取信息"手动获取它们的路径。 (我在MAC上)。正确的路径应该是:
/Users/ME/Documents/folder/folder/*.csv
另外current_file = open(data)
应该替换为current_file = {'file': open(data)}
这里的问题是Python并不知道"数据" 是一个文件,会引发大量错误。新代码:
import requests, glob
text_files = glob.iglob("/Users/ME/Documents/folder/folder/*.csv")
url = 'http://myWebsite.com/extension/extension/extension'
for data in text_files:
with open(data) as f:
file2 = {'file': f}
r = requests.post(url, files=file2)
print r.text