python request/读写/上传文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python request/读写/上传文件相关的知识,希望对你有一定的参考价值。

参考技术A python 读写文件:

data_json = json.dumps(result_r)  #json字符串  

f =open('E://XXX.txt',"a+")  #打开文件,追加+读写

f.write(data_json) # data_json 写入XXX.txt'文件

f.seek(0)  # 光标移动到文件开头

lines = f.read() # 逐行读入

f.close() #关闭文件

mode 打开的方式(r,w,a,x,b,t,r+,w+,a+,U)

r 以只读方式打开文件。文件的指针会放在文件的开头。

w 以写入方式打开文件。文件存在覆盖文件,文件不存在创建一个新文件。

a 以追加方式打开文件。如果文件已存在,文件指针放在文件末尾。如果文件不存在,创建新文件并可写入。

r+ 打开一个文件用于读写,文件指针会放在文件的开头

w+ 打开一个文件用于读写,文件存在覆盖文件,文件不存在创建一个新文件。

a+ 打开一个文件用于读写,如果文件已存在,文件指针放在文件末尾。如果文件不存在,创建新文件并可写入。

记忆方法:记住r读,w写,a追加,每个模式后加入+号就变成可读写。

f =open('E://xxx.txt',"a+")    /    f=open(r'E://xxx.txt',mode='a+',encoding='UTF-8')

踩坑1>  

没有加encoding='UTF-8',可能会报如下错:

import requests  # 使用 request函数需导入 request 库

import json   #使用 JSON 函数需要导入 json 库: import json 。

param = #请求body

url ='http://域名/api' 

header = 'content-type':'application/json'

r = requests.post(url,json=param,headers=header)    #发送post请求

result_r = r.json() #请求返回的json传入对象result_r

data_json = json.dumps(result_r)  #将 Python-result_r对象转为字符串 json.dumps()

文件上传请求(csv文件)

file_path = "xxx.csv"   文件路径

uploaddata = "file":open(file_path, "rb")  

file_upload_result = requests.post(api_URL, files=uploaddata, cookies=cookie)

PythonPython XML 读写

class ACTIVE_FILE_PROTECT_RULE_VIEW(APIView):
    
    renderer_classes = (JSONRenderer, BrowsableAPIRenderer)
    parser_classes = (JSONParser,)
    
    def post(self, request):
        from datetime import datetime
        from django.utils import timezone
        from django.utils.timezone import utc
        import time
        
        import xml.etree.ElementTree as ET
        from xml.etree.ElementTree import ElementTree,Element
        root = ET.fromstring(RULE_XML_TPL)
        fileprotect = root.find(fileprotect)
        # print fileprotect.tag, fileprotect.attrib
        
        user_info = request.session.get(user_info)
        customer_id = user_info.get(customer_id)
        
        body_data = request.body
        request_data = json.loads(body_data)
        device_hash = request_data[device_hash]
        
        with transaction.atomic():
            device = models.FILE_PROTECT_INSTANCE.objects.get(device_hash=device_hash)
            assert(device.customer_id == customer_id)
            
            rule_list = models.FILE_PROTECT_RULE_UPDATE.objects.filter(device_hash=device_hash)
            for rule in rule_list:
                tmp_rule = Element(rule, {
                    id: str(rule.id), 
                    enabled: true if rule.enable else false,
                    status: true if rule.apply_status else false,
                    log: rule.log,
                    opertion: ,.join(json.loads(rule.operation)),
                    recover: true if rule.recover else false,
                    protectdir: rule.protectdir,
                    action: allow if rule.action else deny,
                    protectfiletype: ,.join(json.loads(rule.file_type_list)),
                    comment: rule.commont
                })
                rule.apply_status = 1
                rule.save()
                
                fileprotect.append(tmp_rule)
            # ET.dump(root)
            tmp_xml = ET.tostring(root, encoding="utf-8", method="xml")
            rule_xml = <?xml version="1.0" encoding="utf-8"?>\n + tmp_xml
            
            tmp_commit_rule_list = models.FILE_PROTECT_RULE_COMMIT.objects.filter(device_hash=device_hash).filter(customer_id=customer_id)
            # 首次入库
            if(len(tmp_commit_rule_list) == 0):
                tmp_commit_rule = models.FILE_PROTECT_RULE_COMMIT(customer_id=customer_id, device_hash=device_hash, rule_xml_text=rule_xml)
                tmp_commit_rule.save()
            # 后续修改xml内容和版本号(时间戳)
            else:
                tmp_commit_rule = models.FILE_PROTECT_RULE_COMMIT.objects.get(device_hash=device_hash)
                if(tmp_commit_rule.rule_xml_text == rule_xml):
                    pass
                else:
                    tmp_commit_rule.rule_xml_text = rule_xml
                    tmp_commit_rule.version = timezone.now()
                    tmp_commit_rule.save()
            
            from django.forms.models import model_to_dict
            version = tmp_commit_rule.version
            tmp_commit_rule = model_to_dict(tmp_commit_rule)
            
            ‘‘‘from datetime import datetime
            from django.utils import timezone
            from django.utils.timezone import utc
            import time‘‘‘
            #time.mktime(timezone.now().timetuple())
            version = time.mktime(version.timetuple())
            tmp_commit_rule[version] = version
            
        return APIResponse(status=status_code.success, data=tmp_commit_rule)

 

参考资料:

XML读写

推荐:http://blog.csdn.net/gingerredjade/article/details/21944675

http://bbs.csdn.net/topics/350027413

http://bbs.csdn.net/topics/390194606

http://python.jobbole.com/82775/

http://www.jb51.net/article/67190.htm

http://blog.csdn.net/shomy_liu/article/details/37929181

http://www.python tab.com/html/2013/pythonjichu_0618/451.html

http://blog.csdn.net/xibuzhihun/article/details/6950142

http://www.cnblogs.com/CheeseZH/p/4026686.html

http://www.jb51.net/article/17687.htm

http://blog.csdn.net/kiki113/article/details/4052584

http://www.jb51.net/article/67120.htm

 

 

Django UTC时间问题

解决Python自带的json序列化工具不能序列化datetime类型数据问题:http://www.au92.com/archives/resove-python-can-not-serialize-datetime.html

http://smilejay.com/2014/06/django-datetimefield-timezone-issue/

 

三元表达式:

http://blog.csdn.net/lanyuanershe/article/details/8083425

JOIN LIST:http://www.jb51.net/article/63598.htm

 

 

 

以上是关于python request/读写/上传文件的主要内容,如果未能解决你的问题,请参考以下文章

LINUX下,如何使用C/C++对EXCEL进行读写!

接口自动化-requests-toolbelt处理multipart/form-data

Python爬虫杂记 - POST之multipart/form-data请求

Request/Response;post/get

python 分析系统日志

request.POST / request.body区别