Python 深入浅出
来源:互联网 发布:java json 转换为对象 编辑:程序博客网 时间:2024/06/07 02:06
标准输入 - 键盘
默认的标准输入是键盘,Python 内置函数 input() 函数可以从标准输入读入一行文本。
str = input("请输入你的名字:")print("你的名字:" ,str)
输出结果:
请输入你的名字:star
你的名字: star
文件操作
open() 函数
语法: File object = open(file_name [,access_mode] [,buffering])
参数说明:
- file_name: 是一个包含要访问的文件名称的字符串值。
- access_mode : 决定了打开文件的模式。
- buffering :如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
File 对象
一个文件被打开后,得到一个 File 对象。可以获取该文件的各种信息。
file 属性
- file.closed: 文件已被关闭,返回 true
- file.mode : 返回被打开文件访问模式
- file.name : 返回文件的名称
- file.softspace: 如果用 print() 输出后,必须跟一个空格符,则放回 false,否则返回 true
file = open("d:\\a.jpg","wb")print("file.name = ",file.name)print("file.closed = ", file.closed)print("file.mode = ",file.mode)
输出结果:
file.name = d:\a.jpg
file.closed = False
file.mode = wb
file 函数
- file.close():关闭文件,释放资源,关闭文件不能再进行读写操作。
- file.flush():刷新文件内部缓冲,直接把内部缓冲区数据立即写入到文件。
- file.filenno():返回一个整型文件描述符。
- file.isatty():如果文件连接到一个终端设备就返回 True,否则返回 False。
- file.next():返回文件下一行。
- file.read([size]):从文件读取指定字节数,如果未给定或为负数,则读取所有。
- file.readline([size]):读取正整行,包括 “\n” 字符。
- file.readlines([sizeint]):读取所有行并返回列表,若给定 sizeint>0 ,则是设置一次读取多少字节,这是为了减轻读取压力。
- file.seek(offset[,whence]): 设置文件当前位置。
- file.tell():返回文件当前位置。
- file.truncate([size]):截取文件,截取的字节通过 size 指定,默认为当前文件位置。
- file.write(str):将字符串写入文件,没有返回值。
- file.writelines(sequence):向文件写入一个序列字符串列表,如果需要换行则要自己假如每行的换行符。
file_obj = open('D:/read.txt','r+')try: all_content = file_obj.read() print("file open success") print("all_content = ", all_content) print("")except: print("file open failed")finally: file_obj.close()
输出结果:
file open success
all_content = Python 深入浅出
1.HelloWorld
2.函数
3.高阶函数
4.面向对象
file_write = open("D:/write.txt","w")file_write.write("www.baidu.com")file_write.close()
输出结果:
OS 文件/目录方法
- os.access(path,mode):检验权限模式。
- os.chdir(path):改变当工作目录。
- os.chflags(path,flags):设置路径的标记为数字标记。
- os.chmod(path,mode):更改权限。
- os.chown(path,uid,gid):更改文件所有者。
- os.chroot(path):改变当前进程的跟目录。
- os.close(fd):关闭文件描述符 fd。
- os.closerange(fd_low,fd_high) 关闭所有文件描述符
- os.dup(fd) 复制文件描述符 fd
import osprint("os.name = ",os.name)print("os.environ = ",os.environ) #环境变量
输出结果:
os.name = nt
os.environ = environ({‘ALLUSERSPROFILE’: ‘C:\ProgramData’, ‘APPDATA’: ‘C:\Users\Administrator\AppData\Roaming’, ‘COMMONPROGRAMFILES’: ‘C:\Program Files\Common Files’, ‘COMPUTERNAME’: ‘hy-201710072001’, ‘COMSPEC’: ‘C:\Windows\system32\cmd.exe’, ‘DEVMGR_SHOW_DETAILS’: ‘1’, ‘FP_NO_HOST_CHECK’: ‘NO’, ‘HOMEDRIVE’: ‘C:’, ‘HOMEPATH’: ‘\Users\Administrator’, ‘JAVA_HOME’: ‘C:\Program Files\Java\jdk1.8.0_144’, ‘LOCALAPPDATA’: ‘C:\Users\Administrator\AppData\Local’, ‘LOGONSERVER’: ‘\\hy-201710072001’, ‘NUMBER_OF_PROCESSORS’: ‘4’, ‘OS’: ‘Windows_NT’, ‘PATH’: ‘C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.8.0_144\bin;C:\Program Files\Git\cmd;C:\Users\Administrator\AppData\Local\Android\sdk\platform-tools;C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\;C:\Users\Administrator\AppData\Local\Programs\Fiddler;E:\Python\venv\Scripts’, ‘PATHEXT’: ‘.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC’, ‘PROCESSOR_ARCHITECTURE’: ‘x86’, ‘PROCESSOR_IDENTIFIER’: ‘x86 Family 6 Model 37 Stepping 2, GenuineIntel’, ‘PROCESSOR_LEVEL’: ‘6’, ‘PROCESSOR_REVISION’: ‘2502’, ‘PROGRAMDATA’: ‘C:\ProgramData’, ‘PROGRAMFILES’: ‘C:\Program Files’, ‘PROMPT’: ‘(venv)
StringIO
StringIO 在内存中 读写 str. getvalue() 方法用于获得写入后的str.
from io import StringIOf = StringIO()f.write("Hello,Python")print(f.getvalue())
StringIO 想内存中写入字符串,再通过 getvalue() 获取。
输出结果:
Hello,Python
序列化
序列化:把变量从内存中变成可以存储或传输的过程。在其他语言中称之为 serialization,marshalling,在 Python 中称之为 pickling。
反序列化:把变量内容从序列化的对象重新读到内存里,称 unpickling。
import picklefile_tom = open("D:/tom.txt","wb")d = dict(name="tom",age=20,score=90)byte_buffer = pickle.dump(d,file_tom)
pickle.dump 将 dict 对象序列化为 bytes,然后写入到文件中。
JSON
内置对象与 JSON 转换
import jsontomcat = dict(name='tomcat',age= 22,score =90)json_str = json.dumps(tomcat) # 对象转换成 json 字符串print(json_str)tomcat_obj = json.loads(json_str) # json 字符串转换成对象print("tomcat_obj type = ",type(tomcat_obj))print("tomcat_obj = ",tomcat_obj)
输出结果:
{“name”: “tomcat”, “age”: 22, “score”: 90}
tomcat_obj type = <class ‘dict’>
tomcat_obj = {‘name’: ‘tomcat’, ‘age’: 22, ‘score’: 90}
普通 class 对象转换成 JSON
普通 class 对象如果没有做处理,将会转换失败。
TypeError: Object of type ‘Student’ is not JSON serializable
解决办法: dumps(obj,default) 可选参数 default 就是把任意一个对象转换成一个可序列为 JSON 的对象。
class Student(object): def __init__(self,name,age): self.name = name self.age = agedef stu2dict(stu): return { 'name':stu.name, 'age':stu.age }stu = Student("mike",22)print(json.dumps(stu,default=stu2dict))
输出结果:
{“name”: “mike”, “age”: 22}
JSON 转换成对象
class Student(object): def __init__(self,name,age): self.name = name self.age = age def __str__(self): return "name = %s, age = %d" % (self.name,self.age)def dict2stu(d): return Student(d['name'],d['age'])json_stu = '{"name":"luse","age":15}'s_obj = json.loads(json_stu,object_hook=dict2stu) # JSON 转换成对象print(type(s_obj))print(s_obj)
输出结果:
<class ‘main.Student’>
name = luse, age = 15
- Python 深入浅出
- Python 深入浅出
- Python 深入浅出
- Python 深入浅出
- Python 深入浅出
- 深入浅出python 1
- 深入浅出Python装饰器
- 深入浅出Python装饰器
- 深入浅出python闭包
- 深入浅出 Python Iterators 迭代器
- 深入浅出 Python Generators
- 深入浅出 Python Closures
- 深入浅出 Python Decorators
- 深入浅出 Python Descriptors / Properties
- 深入浅出Python(中文版) 下载地址
- 深入浅出理解python 装饰器
- python yield函数深入浅出理解
- 深入浅出Python中的异步编程
- 《人类简史》读书笔记(分析阅读)
- 二分搜索树的删除节点操作
- java
- 13个能快速开发android的经典项目
- 213. House Robber II
- Python 深入浅出
- JAVA
- 同步和异步
- MySql总结
- Java解析XML的四种方法详解
- 【BigHereo 52】---加不加MQ的思考?
- Spring中<context:annotation-config/>的作用
- 解析字符串XML成map
- 程序代码里不要使用select * 的两个理由