Python学习笔记:外部数据的输入、存储等操作
查看current工作路径:
>>> import os
>>> os.getcwd()
'D:\\python'
更改工作路径:
>>> os.chdir('E:\\forpython') # 要用双斜杠
读入文件:
>>> red_data = open('《红楼梦》.txt')
>>> print(red_data.readline())
《红楼梦》
>>> print(red_data.readline())
曹雪芹 高鄂 著
>>>print(red_data.readline())
第一回 甄士隐梦幻识通灵 贾雨村风尘怀闺秀
>>> red_data.seek(0)
0
>>> print(red_data.readline())
《红楼梦》
刷屏了。。。
>>> for each_line in red_data:
print(red_data.readline(),end = '\t')
处理完了之后:
>>> red_data.close()
对字符串的split:
>>> test = 'man said:\'how are you\''
>>> test
"man said:'how are you'"
>>> (role,line_spoken) = test.split(":") # 多重赋值
>>> role
'man said'
>>> line_spoken
"'how are you'"
head frist Python里面文件的资源链接:http://python.itcarlow.ie/resources.html
查看BulitInFunction的帮助文档:
>>> help(test.split)
很奇怪,用help(split)会报错。。。这个有待研究
>>> help("split")
No Python documentation found for 'split'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.
看看help()会有什么结果:
>>> help() Welcome to Python 3.6's help utility! If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http://docs.python.org/3.6/tutorial/. Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To quit this help utility and
return to the interpreter, just type "quit". To get a list of available modules, keywords, symbols, or topics, type
"modules", "keywords", "symbols", or "topics". Each module also comes
with a one-line summary of what it does; to list the modules whose name
or summary contain a given string such as "spam", type "modules spam". help>
help> split
No Python documentation found for 'split'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.
没办法。。。去百度一下吧
help("open")
这样用在split上还是会报错。。。不管了
打开在headfirst Python support site下载的sketch.txt,跑一下程序:
>>> data = open('sketch.txt')
>>> for each_line in data:
(role,line_spoken) = each_line.split(':',)
print(role,end=' ')
print(' said:',end=' ')
print(line_spoken,end=' ')
>>> data.close()
打印一部分后会报错:
Traceback (most recent call last):
File "<pyshell#14>", line 2, in <module>
(role,line_spoken) = each_line.split(':',1)
ValueError: not enough values to unpack (expected 2, got 1)
aaarticlea/png;base64,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" alt="" />因为这一段中没有':'
解决办法:
>>> for each_line in data:
if not each_line.find(':') == -: # 返回要查找字符所在的位置
(role,line_spoken) = each_line.split(':',)
print(role,end=' ')
print(' said:',end=' ')
print(line_spoken,end=' ')
检查文件是否存在:
>>> os.path.exists('123.xlsx')
异常错误处理机制:
>>> for each_line in data:
try:
(role,line_spoken) = each_line.split(':',)
print(role,end=' ')
print(' said:',end=' ')
print(line_spoken,end=' ')
except:
pass
指定处理异常的类型:
>>> for each_line in data:
try:
(role,line_spoken) = each_line.split(':',)
print(role,end=' ')
print(' said:',end=' ')
print(line_spoken,end=' ')
except ValueError:
pass
分别将两个人的台词保存到两个列表中:
>>> man=[]
>>> other_man=[]
>>> for each_line in data:
try:
(role,line_spoken)=each_line.split(':',)
line_spoken=line_spoken.strip()
if role=='Man':
man.append(line_spoken)
elif role=='Other Man':
other_man.append(line_spoken)
except ValueError:
pass
写出文件:
>>> out1=open('man.txt','w')
>>> out2=open('other_man.txt','w')
>>> print(man,file=out1)
>>> print(other_man,file=out2)
>>> out1.close()
>>> out2.close()
完成写入后一定要关闭文件,即:out1.close() 这称为刷新输出
>>> try:
man_file=open('man\'s word.txt','w')
other_file=open('other man\'s word.txt','w')
print(man,file=man_file)
print(other_man,file=other_file) except IOError:
print('File error')
finally:
man_file.close()
other_file.close()
使用finally确保文件的关闭
打印异常错误:
except IOError as err:
print('File error:'+err)
使用with:
>>> try:
with open('1.txt','w') as data1:
print(man,file=data1)
with open('2.txt','w') as data2:
print(other_man,file=data2)
except IOError as err:
print('file error: ',str(err))
不需要close了,这样代码更简洁
修改上次的print_it_all,
>>> def print_it_all(thelist,indent=False,level=0,fn=sys.stdout):
for each_item in thelist:
if isinstance(each_item,list):
print_it_all(each_item,indent,level+1,fn)
else:
if indent:
for tap_stop in range(level):
print('\t',end='',file=fn)
print(each_item,file=fn)
再用print_it_all把数据输出到外部文件:
>>> with open('aaa.txt','w') as mdf:
print_it_all(man,fn=mdf)
pickle:个人理解是对数据的封装(封装就是只能通过Python打开这个文件),并且持久的储存数据
>>> with open('man_data.txt','wb') as man_file: pickle.dump(man,man_file)
>>> new_man=[]
>>> with open('man_data.txt','rb') as man_file:
new_man=pickle.load(man_file)
Python学习笔记:外部数据的输入、存储等操作的更多相关文章
- python学习笔记3_数据载入、存储及文件格式
一.丛mysql数据库中读取数据 import pandas as pdimport pymysqlconn = pymysql.connect( host = '***', user = '***' ...
- Python学习笔记(15)- os\os.path 操作文件
程序1 编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图: import os def countfile(path): dict1 = {} # 定义一个字典 all_files = ...
- Python学习笔记(三)字符串类型及其操作(2)
1.字符串的表示 字符串是字符的序列表示,可以由一对单引号(‘).双引号(“)或三引号(’‘’)构成.其中,单引号.双引号和三引号都可以表示单行字符串,但是只有三引号可以表示多行字符串 在使用双引号时 ...
- Python学习笔记:数据的处理
上次的学习中有个split函数,照着head first Python上敲一遍代码: >>> with open('james.txt') as jaf: data=jaf.read ...
- Python学习笔记(一)——输入与输出
输出:——print() Python中的输出使用print()完成 >>> 在屏幕中输出Hello World >>> print('Hello World') ...
- python学习笔记七--数据操作符
一.Python表达式操作符及程序:
- Android学习笔记之数据的Sdcard存储方法及操作sdcard的工具类
FileService.java也就是操作sdcard的工具类: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
- python学习笔记七--数据操作符的优先级
一.混合表达式哪个部分先计算: 1. 取决于操作符的优先级,不同操作符的优先级是不一样的,例如‘*’的优先级高于‘+’ 2. 上节的表格里越靠后,优先级越高. 3 . 同一表达式的相同操作符是按从左到 ...
- ★★★★[转载]Python学习笔记一:数据类型转换★★★★
一.int函数能够 (1)把符合数学格式的数字型字符串转换成整数 (2)把浮点数转换成整数,但是只是简单的取整,而非四舍五入. 举例: 1 aa = int("124&quo ...
- Python学习笔记:第3天 字符串的操作
目录 1. python的数据类型 2. int类型的操作 3. bool类型 4. 字符串的操作 5. for循环 1. python的数据类型 int 整数 str 字符串.一般不会用字符串保存大 ...
随机推荐
- 110、通过案例学习Secret (Swarm17)
参考https://www.cnblogs.com/CloudMan6/p/8098761.html 在下面的例子中,我们会部署一个 WordPress 应用,WordPress 是流行的开源博客 ...
- 部署node节点组件
部署node节点组件 mv kubelet kube-proxy /opt/kubernetes/bin chmod +x /opt/kubernetes/bin/* && chmod ...
- spark精华面试题
1.driver的功能是什么? 1)一个Spark作业运行时包括一个Driver进程,也是作业的主进程,具有main函数,并且有SparkContext的实例,是程序的人口点: 2)功能:负责向集群申 ...
- 【Lucene】小谈lucene的BooleanQuery查询对象
BooleanQuery用于逻辑查询,即所谓的组合查询,具体的逻辑关系如下: 一个具体的使用测试,如下:
- JVM常用指标查询
一.what‘s going on in Java Application 当系统卡顿,应用莫名被杀掉,我们应该怎么排查?在我已知的系统挂掉的情况,只经历过两种:1.内存申请不了(OOM):2.CPU ...
- busybox介绍
BusyBox 是一个集成了一百多个最常用linux命令和工具的软件.BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件.这样的集合可以替代大部分常用工具比如的GNU fi ...
- 反selenium关键字
webdriver __driver_evaluate __webdriver_evaluate __selenium_evaluate __fxdriver_evaluate __driver_un ...
- Ubuntu中出现“Could not get lock /var/lib/dpkg/lock”的解决方法
在运行Ubuntu安装软件,使用命令sudo apt-get install时,有时会出现以下的错误: E: Could not get lock /var/lib/dpkg/lock - open ...
- 解决 android studio 出现:"AndroidStudio:Could not GET 'https://dl.google.com Received status code 400 from server: Bad Request"问题
一.android studio 编译项目时出现"AndroidStudio:Could not GET 'https://dl.google.com Received status cod ...
- springmvc视图文件的保护
可以将视图文件,包含视图文件的目录放在WEB-INF下,WEB-INF是受保护的,放在该目录下,就只能在代码中访问到了view文件了,用户无法通过浏览器直接输入地址访问.