Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:相同的文件输出不同的二进制文件_Python_Binary_Pyramid - Fatal编程技术网

Python:相同的文件输出不同的二进制文件

Python:相同的文件输出不同的二进制文件,python,binary,pyramid,Python,Binary,Pyramid,我正试图通过对控制器的后端调用来呈现一个特殊的文件(.pkpass)。我想这部分是对的,我只想让我的控制器为我提供一个特定的文件,下面是代码 @view_config(name='pkpass', request_method='GET') def post_mobile(request): print('hitting') pkppass = open('/Users/jamthor/Downloads/good.pkpass','rb') pkread = pkppass.rea

我正试图通过对控制器的后端调用来呈现一个特殊的文件(.pkpass)。我想这部分是对的,我只想让我的控制器为我提供一个特定的文件,下面是代码

@view_config(name='pkpass', request_method='GET')
def post_mobile(request):
  print('hitting')
  pkppass = open('/Users/jamthor/Downloads/good.pkpass','rb')
  pkread = pkppass.read()

  try :
   res = Response(body=pkread, content_type = 'file/vnd.apple.pkpass;base64')
   res.content_disposition = 'attachment; filename="test.pkpass"'
 except Exception as e :
   print(e)
 finally:
  pkppass.close()  

 return res
问题不在于提供文件;通过XMLHttpRequest下载文件后,无法打开该文件。我的第一个想法是关于一个损坏的二进制文件,因此我在编辑器中打开了原始文件(名为good.pkpass,它可以正常工作),并试图与我从应用程序获得的文件(名为test.pkpass)进行比较

问题是它们看起来几乎一样(虽然是二进制的),但我能发现一些差异(尽管它们很微妙,但在二进制中它意味着完全不同的东西)

我在下面附上了2个截图,你可以从光标所在的位置从左到右看到缺少的
&
字符(从而证明确实存在差异)

我的问题是:为什么同一个文件会给我不同的二进制文件?因此,为什么原始文件可以很好地打开,而另一个却不能


我注意到您在
open()
中使用了
'rb'
作为参数,其中b代表二进制。。你有没有试着简单地把它作为
'r'
?@burnzZ如果我省略
b
它是否与
内容一起工作?\u type='application/octet stream'
?两个问题1)你如何提供文件-你的web服务器配置如何。解释所有涉及HTTP请求的层,如Apache、Nginx等。2)如何下载文件-是否使用命令行工具(如curl或wget)确认结果