无法打印POST中文件夹中所有文件的结果?

时间:2014-05-16 15:31:42

标签: python python-requests glob

我有一个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。

2 个答案:

答案 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
相关问题