使用“with”关键字时出现Attrbute错误_exit_

时间:2015-06-03 07:25:10

标签: python django tastypie

我已将.csv个文件传递给发布请求,

input_file = data.get('file', None)
with input_file as datasheet:
        header = datasheet.readline()

我总是在第二行收到错误。我的文件类型也是Unicode,这就是为什么它再次在readline()

的第三行给出错误

2 个答案:

答案 0 :(得分:1)

>>> with "test1.html" as fp:
...    header = fp.readline()
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: __exit__
>>> 

如何使用 stament读取文件:

代码:

>>> with open("test1.html") as fp:
...    header = fp.readline()
... 

在执行任何过程之前检查文件是否退出。

使用os模块

<强>演示

>>> os.path.isfile("test1.html")
True
>>> os.path.isfile("nofile.html")
False
>>> 

文件使用tastypie

通过API测试中的帖子请求上传到服务器
fp = open("C:\sample_datasheet.csv", 'rb')
content = fp.read()
fp.close()

fd ={'file': "C:\sample_datasheet.csv", "content": content}
self.assertHttpOK(self.api_client.post('api of upload', format='json',\
org_id=2, content_type="multipart/form-data",\
data=fd))

并将contentdata保存到视图中的服务器位置。

答案 1 :(得分:1)

考虑到{u'file': u'C:\\sample_datasheet.csv'}函数返回data.get(),您必须获取文件名并将其打开:

data = data.get('file', None)
fname = data["file"]
with open(fname, "r") as datasheet:
        header = datasheet.readline()