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/读写/上传文件的主要内容,如果未能解决你的问题,请参考以下文章
接口自动化-requests-toolbelt处理multipart/form-data