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,iVBORw0KGgoAAAANSUhEUgAAAUMAAABXCAYAAACeAyc+AAAMLElEQVR4nO2dX4gcRR7Hf907E5NV/BfNPxUTjYqXlzPJeSQxL8ELJoIivopBjS8+BH0VxAdBQRHk8iQYzoj4IOKDmOzbHSxK4KKckIso/llB3YiLJp5/YtzZ6evq3t7tra2qru6q6q7u+X5gmJme7l/9uqbmO/X3V8Gx/5yJ9v95HTGCIKAoiohHdLzqubLrdGzrkF3LP6vsF/ln4o+OHdvpq+zp5n+eKvdeNc90799GWQUgT69pB+pmlH4YVe8VYgJGkTD/JqtJ5anjh8Cn2QaYz2X9rit/RemoyJ/b9HfB+26ax7Lrq3x/oNssqxnyhUn2Q82fl2+SZc+yY6IfKn9u/nXZ5qHseGZHJhR82qp7MkGVvzr5VzatovRF55k0k02/Q97H7HW+26PIvup6AGQIm8m6hUZUCHVsqQTWhPz1efEzSceFr2VsuvgBq2za/A5s2ZG9rnJ9WTtgdBi5PsMuo1OjBwCIgRh2CAggANUJi08BoD1gYARUBWIIAADENZP5Pidf+6CKRmNNfHV5zzb8qyN91366tF92WhHwkyZG/5fNMxThmxBmU3RcCHZm1wVN52PT6bsGU2iACa1qJosKOmoCYkzyxOUfgkv7ZeyizDSLj/nfmBiioxsA4BOVptYUrSDxob+xjr4/mX3dFRwufNRdAVLU76rySfQnVqVGVta+jfJlY4WM6/Kvs0JLZyUTb0N0vzKfRdfr+qfrW9N96DzSFSii5U8MVVQQ2dInWfPWFVUitVS1zR8rGzXFdj6o/JD5wy9XzI7pXKs6t8i/svbLlC+d9Kvkva3yX9V+9l60ZFN0fdFSVNGfjCiP8npgcv+m+e+S0jXDosKcP6cpmk5fhyYLgysBdkWdf6RFuC7/Ovb5NOrOjzK+tYnKzeSiajmQo/qX9R1Z7aIt9m3guvyb2K+ji6qO76OJ77y0GLbxB+wbbc+/Mt0APto3wbUvpvZ9yqu20arRZN0+zLYgux+fa9quffP53ttAvt9OpyzZyG8X31kTvwPpChT+uKoTlr9W1LlrS7R0RqpM0i8a7Spqxqk+532xnTd8mrz/OvmjM9pn0ow1sW/j+83brDKa6br869jPv9epRat+v3nxlPlftXzLjvF2fKnMBPk9UFwSDQZEP/6YPKJz54jOnyf64w+i2VmK5p+z9wn9PtGKFclzMP+cvB8fp+Cyy4iuvJJo9WoKxsac+143ba7tgmYpEkMgx2oIr+i77yj68sv0MTND9MUXFP3wQyqCP/+cClj8CLZsITp7dkHgAvacE7+EX39dEMdhXigvv5yijz9ObTLbl16aiiKzfcMNFKxdS8GmTRTceGPyuk349k8J2kcbBqB8pbIYRqyG9+GHNPz8c6L4mQkgXXIJBUyQ2OPWWynYtYuCWKgSAbziCpt+L/rBRDUWxcQfJpCffkrDkycpioWYCSoTRdq+nUImjlu3pqLpKSi0wAYoR9XQaiazf5q5338nOnEiFcAPPiCKm7qJuNxxBwXXXJMKYCyGTbOkf+SXXxJRjL79lqL33098Z8IcbttGQSyQtGMHhaw2CgAYeQrF8G9xs3Ti0CEafvIJhRs3JiKSiAmrcXmKqo8kimuyQ1aTjQU9mppKmuzh3XdTePvtNXsJAPAJoRhGcS1w7rXX6MzLL9P6nTtTsbjrroZcrIZup/FwYoKGx49T9NVXFNxzD40dOJAO2AAARopl8wznXn+dBnv3El18Mf311CnqHT7cOiEsQ7hvX3KPvSNHiFatosGePTT3xhtNuwUAqJkFMWSjvrP33puM0vYnJ6n/wAM0zUZwW4psvpaMYM0a6sX33H/vPaKZGZq97750QAYAMBIkzeR94/+jwbPPUu+55yhYvz79oANzk0zuIZqeprknn6Sxp57yun8UAGCH4F/H/x3t+scL1H/zzaUfSCZvMopmjxfNUBetGilamK76XCZ4NgR99v77qffSSxRcd52RHQCA34Rbjh6m3iuvaJ3ML9FRrRXOP1TCqYqNlj107buA9SXOPfNMuoIGANBZwjAaUsBWcZRAtVYxL5i2FluLBNGmfRUBW/Fy4QJFn33mNB0AQLOE03/Zbd0oX3srg07UDb5m6LpvM9i3j4YffeQ0DQBAs4QbTk4KP6ja/LTRT2ejGWxzACiamKCx226zYgsA4CfhsNen6KefKhuwEYxS9b6KDZska59XriTavNlZGgCA5gn/e+AQDR55RPihKrZa9uCFUNbM5Uei+ev5eGqyNET2XYYsGjz8MPWefpqCntUAPwAAzwjPr9lAveefp8FDD1H0zTfLTpCFBFL11Yn69HhByx8TvValoTPabEr09dc0++CD6bSaDRuM7QEA/Cap7rCIM2MvvkiDgwcp3L2bxp54YslJplGF68SGX3NxXgxPnEimHLHRZABA91lYjsfi/PXffpto3Tqa3bWLBkePJsFa89Q1etsE0ZkzyT3P7thBdO211H/rLQghACOEOGrNYEBzr75K0TvvUBALQxK1Jn50keG776ZRa6anF6PWdHArAQCAmsJ4hiyQ6/DYMYpOnaLg+usp2LaNwu3bKbj55hrdtEfEImHPxzMcTk1RuHUrhfv3JzEaAQCji1AMRStKouFwIVp0Eun6+++XRboO55uVTTWjeb9X9/u0ZdUq2rRiBR05eDCNdL1uXSrmLEDtzp0UhPXtliralSz/vm4/XKVpw77P/dKgmywTQ74Qygolm5u4ZA+UuJbFNnP6Z/x856OPEt1yS7LvycIeKFddZd15JtDZxlDJHihnz9LfH3uM/jQ+Tns2bqSzMzN0+rffaPfjj1O4eXMq3mxnvQbRzV/XPjAghgAssmzfZNm8Qf44qwWyY+GePYvnxuLzwk030Z1x7Yut5U12yZvfHS+IhSpiNcdsdzwmYhddtLhDXu51QraN6IULizvjsdfx9dHp0+n1bEJ0tmXo/O54U/E5x86do72Tk7T26qtTv5g4gwV0RMYo/BlEDLSQJTVD2Q+gzMRm5f4j2b7JTMSyfZPnH1HudQITRSaS888Lj5UrU+FjoirY6U43zJgpJrazPPK59tO0b02nD0aP0ssq+JUijKKYhgvzFOdFLCyId5gdc9WnphNvsan+vLwfsvSL4j3q2i763qoIvk6+mfgPgCtKiyEf01CEql9MVcvkw3+JRFLXx3ztS+Ubn75oiZ+s+6AqqlphUS1cFXRXN23VNTrfr4l9U/8BcIWTBbdFPyKdws8v37OFjsA2XUupIv5tpu3+g27QSPSBpgu/qObnE6r8ka0Vbwu6/rfpnkA3GLlQLF3omHcZpacO2u4/6CZLZhzr9rHZxreamQ51bDmQT0v0uo3o+l9n/gLAWFYz1B1JFU1dEUW14Y+pmkk2RzL54/kQYbIYjaLzXUTqUdnUaUaaNJN187jq1CQd+21u5oPuImwm6xZOnRHWMv1Bpj8K0aCLaX+UC1+Lri3qMzTBxr2bXFO1bAHgmvoW5gIAgMdADAEAgCCGnQMDDwBUA2IIAAAkiFqT0fT6XBGi0UkXPrYhxJUM2Wh5WTD3D4way+YZivDlRyEL6JB/HmVE66oBAHqM3AoUHXTExMd4f2XnA0I0AViksT5Dk45+W01BAADIqFQzbHs8QN1rfYv3ZyN/Tf0HoKtIV6D4HA+Q91HXP1272TVFn9cd769M/uqkDxEEYBGj4K5F5wA72P4jAQAsp3Iz2ed4gG3Gl3iFEFwwalTaA8WXH0pXB1IQ7w+A+mnlaHKX8SVP8P2AUUO6AoU/7kM8QJEt0chqV+P96cSL1KWq/wB0lSVi6Hs8QF1bLmMNmqZjO5ahq3uFQIJRA4EaAACAIIYAAJCgJYZt6khvk68AAH8oFMO2Tevo6nQbAIBblGLYNiHMgCACAMqCPkMAACCFGLa1VpiB2iEAoAyoGQIAAJVcmyyKp1cU8y9/jmoPk6LAD6rP21yDBQD4QSkxFMXT04mtx8c7FNksul7HPgAAVKVSCC9+2R6/Vphhs7+uaO0uAACY4mRDKJN4hzqBFlALBADYRiqGsrD6RdhostpoBqPpDAAog/FosqnoiPZYMbUBAABlUTaTVZsu5c8RXcMjG0SRDcrwNlX2MaACADClsM9QJIgmMflEn5exXXQOhBAAUAWtZrIoqrKvQAgBAFUoPc8QAAC6yP8BUOUYlxXBqIcAAAAASUVORK5CYII=" 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)
最新文章
- MySql学习(五) —— 数据库优化理论篇(一)
- Listbox简单用法
- HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”
- omnet++5.0安装使用
- Jquery实现异步上传图片
- snoopy 强大的PHP采集类使用实例代码
- [转]dev C++编写windows程序遇到问题
- snort使用
- ACM刷题常用链接
- 关于Javascript语言中this关键字(变量)的用法
- (转)iOS Wow体验 - 第三章 - 用户体验的差异化策略
- BZOJ 3916: [Baltic2014]friends( hash )
- python+sublime text 2 中文乱码问题的解决方法[Decode error - output not utf-8]
- java中的词汇
- java工具类(七)实现给定任意年份和月份得出天数
- 图像边缘检测--OpenCV之cvCanny函数
- php7.2连接Sqlserver2008 r2
- maven的单元测试中没有
- WordCloud词云包的安装
- SQLserver数据库连接问题