sdk上传文件到Ali云oss,使用python的chardet库获得文件编码并修改编码

百度了多少个应答都尚未缓慢解决难题,某个回答分明是直接复制过来的一些股票总值都未有,然后google一下登时化解。很多时候不能怪寻找引擎,难题出在有的境内网民对知识的不负义务

明天刚使用Ubuntu
由于设置的是pip
捌的本子,作者以为pip版本有个别低就随手将将pip更新了,刚新到pip
十本子的,没悟出刚更新完就报错了,爆发 ImportError: cannot import name
‘main’的主题素材,

<pre>

第3须要安装chardet库,有成都百货上千艺术,小编才用的是比较笨的法子:sudo pip
install chardet

化解:找到报错文件,也正是充足pip,然后cd进目录 vi
编辑pip,将个中的剧情改为如下所示:

他报错的文件是在usr/bin/pip 的,之后就进去到那多少个路线下,展开对应文件

!/usr/bin/python

import oss2
import sys

print ‘input file:’, sys.argv[1]
destFileName = sys.argv[1]
auth = oss2.Auth(‘$AccessKeyID’, ‘$AccessKeySecret’)
bucket = oss2.Bucket(auth, ‘区名’, ‘桶名’)
result = bucket.put_object_from_file(sys.argv[1], destFileName)
if result.status == 200:
print ‘upload success’
else:
print ‘upload fail,error code’, result.status
</pre>

使用
<pre>
python main.py 文件名
</pre>

其它

  1. 亟待设置oss2库,用pip安装就可以
    <pre>
    sudo pip install oss2
    </pre>
  2. 一般用Ali云服务器作为中间转播

澳门葡京备用网址,复制代码 代码如下:

– coding: utf-8 –

import re

import sys

from pip._internal import main as _sdk上传文件到Ali云oss,使用python的chardet库获得文件编码并修改编码。main

if name == ‘main‘:

  sys.argv[0] = re.sub(r'(-script.pyw?|.exe)?$’, ”, sys.argv[0])

  sys.exit(_main())

cd /usr/bin
sudo vi pip

#!/usr/bin/env python
# coding: UTF-8
import sys
import os
import chardet

自此改为那样

 
def print_usage():
  print ”’usage:
  change_charset [file|directory] [charset] [output file]\n
  for example:
    change 1.txt utf-8 n1.txt
    change 1.txt utf-8
    change . utf-8
    change 1.txt
”’
def get_charset(s):
  return chardet.detect(s)[‘encoding’]

澳门葡京备用网址 1

 
def remove(file_name):
  os.remove(file_name)

她事先的文件最终一行是sys.exit(main())的,然后

 
def change_file_charset(file_name, output_file_name, charset):
  f = open(file_name)
  s = f.read()
  f.close()

esc
:wq

  if file_name == output_file_name or output_file_name == “”:
    remove(file_name)

保存退出就能够,小编输pip的时候发现仍然那么报错,作者退出终端再重复展开以往就可以啊

  old_charset = get_charset(s)
  u = s.decode(old_charset)

还有1个示范:

  if output_file_name == “”:
    output_file_name = file_name
  f = open(output_file_name, ‘w’)
  s = u.encode(charset)
  f.write(s)
  f.close()

减轻:找到报错文件,约等于11分pip,然后cd进目录 vi
编辑pip,将中间的内容改为如下所示:

 
def do(file_name, output_file_name, charset):
  if os.path.isdir(file_name):
    for item in os.listdir(file_name):
      try:
        if os.path.isdir(file_name+”/”+item):
          do(file_name+”/”+item, “”, charset)
        else:
          change_file_charset(file_name+”/”+item, “”,
charset)
      except OSError, e:
        print e
  else:
    change_file_charset(file_name, output_file_name, charset)

# -*- coding: utf-8 -*-

 
if __name__ == ‘__main__’:
  length = len(sys.argv)

import re

  if length == 1:
    print_usage()
  elif length == 2:
    do(sys.argv[1], “”, “utf-8”)
  elif length == 3:
    do(sys.argv[1], “”, sys.argv[2])
  elif length == 4:
    do(sys.argv[1], sys.argv[3], sys.argv[2])
  else:
    print_usage()

import sys

pip install chardet 复制代码 代码如下: #!/usr/bin/env python # coding:
UTF-8 impor…

from pip._internal import main as _main

if __name__ == ‘__main__’:

  sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$’, ”,
sys.argv[0])

  sys.exit(_main())

正文永世更新链接地址

澳门葡京备用网址 2

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website