我正在使用请求将pdf上传到API.它存储为下面的"响应".我想把它写成一个excel.
import requests
files = {'f': ('1.pdf', open('1.pdf', 'rb'))}
response = requests.post("https://pdftables.com/api?&format=xlsx-single",files=files)
response.raise_for_status() # ensure we notice bad responses
file = open("out.xls", "w")
file.write(response)
file.close()
Run Code Online (Sandbox Code Playgroud)
我收到错误:
file.write(response)
TypeError: expected a character buffer object
Run Code Online (Sandbox Code Playgroud) 我想使用在Linux上运行的python编写带有DOS/Windows行结尾'\ r \n'的文本文件.在我看来,必须有比手动放一个"\ r \n"在每行的末尾或者使用终止转换工具行更好的办法.理想情况下,我希望能够执行一些操作,例如将os.linesep分配给我在编写文件时要使用的分隔符.或者在我打开文件时指定行分隔符.
我需要确定哪个文件是二进制文件,哪个文件是目录中的文本.
我试过使用mimetypes,但在我的情况下它不是一个好主意,因为它无法识别所有文件的mimes,我在这里有陌生人...我只需要知道,二进制或文本.简单吗?但我找不到解决方案......
谢谢
我需要在目录中找到二进制文件.我想用文件做这个,然后我会用grep检查结果.但我的问题是我不知道什么是二进制文件.什么会给二进制文件的文件命令或我应该用grep检查什么?
谢谢.
我已经在检查内容类型,大小和扩展名(Django(音频)文件验证),但是我需要一个库来读取文件并确认它实际上是我希望它(主要是mp3和mp4) .
我一直在这里:http://wiki.python.org/moin/Audio/但没有运气.已经有一段时间了,我在树林里有点失落.依靠这么大的时间来完成这件事...
提前致谢.
编辑:我已经(在Django中)使用UploadedFile.content_type():
"随文件一起上传的内容类型标题(例如text/plain或application/pdf).与用户提供的任何数据一样,您不应该相信上传的文件实际上是这种类型.您仍然需要验证该文件包含内容类型标头声称的内容 - "信任但验证".
所以,我已经在阅读标题了.但是如何验证文件的实际内容?
使用Python3,希望os.walk
文件目录,将它们读入二进制对象(字符串?)并对它们进行进一步处理.不过第一步:如何读取文件的结果os.walk
?
# NOTE: Execute with python3.2.2
import os
import sys
path = "/home/user/my-files"
count = 0
successcount = 0
errorcount = 0
i = 0
#for directory in dirs
for (root, dirs, files) in os.walk(path):
# print (path)
print (dirs)
#print (files)
for file in files:
base, ext = os.path.splitext(file)
fullpath = os.path.join(root, file)
# Read the file into binary? --------
input = open(fullpath, "r")
content = input.read()
length = len(content)
count += 1
print (" …
Run Code Online (Sandbox Code Playgroud) 我有一段代码可以为我处理文件上传,理想情况下我只想接受文本文件(csv、制表符分隔文件等),所以我添加了这段代码:
mimetype = magic.from_buffer(request.FILES['docfile'].read(512), mime=True)
if form.is_valid() and mimetype == 'text/plain':
....
Run Code Online (Sandbox Code Playgroud)
就在最近,我的一位用户尝试上传一个文本文件,但系统拒绝了它,该文件的 mime 是:
file --mime-type -b input_file.txt
application/octet-stream
Run Code Online (Sandbox Code Playgroud)
当然,之前上传的所有文件都是文本/纯文本。这两者有什么区别?是否有更“全局”的方法来检查文件是否是文本文件?
在linux中,我们有一个名为"file"的实用程序,它可以帮助我们确定文件的标识.有没有可以做同样工作的python模块?
我不喜欢使用subprocess.Popen(['file', 'blah.blah'])
,因为它取决于平台.例如,Windows没有"文件"(虽然可以下载).
关于在python中确定文件是二进制文件还是文本的解决方案,应答者使用:
textchars = bytearray([7,8,9,10,12,13,27]) + bytearray(range(0x20, 0x100))
Run Code Online (Sandbox Code Playgroud)
然后用于.translate(None, textchars)
删除(或替换为空格)以二进制形式读入的文件中的所有此类字符.
回答者还争辩说,这种数字的选择是"基于文件(1)行为"(对于什么是文本而不是什么).这些数字的重要性是从二进制文件中确定文本文件?