查看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学习笔记:外部数据的输入、存储等操作的更多相关文章

  1. python学习笔记3_数据载入、存储及文件格式

    一.丛mysql数据库中读取数据 import pandas as pdimport pymysqlconn = pymysql.connect( host = '***', user = '***' ...

  2. Python学习笔记(15)- os\os.path 操作文件

    程序1 编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图: import os def countfile(path): dict1 = {} # 定义一个字典 all_files = ...

  3. Python学习笔记(三)字符串类型及其操作(2)

    1.字符串的表示 字符串是字符的序列表示,可以由一对单引号(‘).双引号(“)或三引号(’‘’)构成.其中,单引号.双引号和三引号都可以表示单行字符串,但是只有三引号可以表示多行字符串 在使用双引号时 ...

  4. Python学习笔记:数据的处理

    上次的学习中有个split函数,照着head first Python上敲一遍代码: >>> with open('james.txt') as jaf: data=jaf.read ...

  5. Python学习笔记(一)——输入与输出

    输出:——print() Python中的输出使用print()完成 >>> 在屏幕中输出Hello World >>> print('Hello World') ...

  6. python学习笔记七--数据操作符

    一.Python表达式操作符及程序:

  7. 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 ...

  8. python学习笔记七--数据操作符的优先级

    一.混合表达式哪个部分先计算: 1. 取决于操作符的优先级,不同操作符的优先级是不一样的,例如‘*’的优先级高于‘+’ 2. 上节的表格里越靠后,优先级越高. 3 . 同一表达式的相同操作符是按从左到 ...

  9. ★★★★[转载]Python学习笔记一:数据类型转换★★★★

    一.int函数能够     (1)把符合数学格式的数字型字符串转换成整数     (2)把浮点数转换成整数,但是只是简单的取整,而非四舍五入. 举例: 1 aa = int("124&quo ...

  10. Python学习笔记:第3天 字符串的操作

    目录 1. python的数据类型 2. int类型的操作 3. bool类型 4. 字符串的操作 5. for循环 1. python的数据类型 int 整数 str 字符串.一般不会用字符串保存大 ...

随机推荐

  1. ubuntu 安装vim报错

    问题:ubuntu18.04默认没有安装vim,使用 sudo apt install 提示 错误信息: 下列信息可能会对解决问题有所帮助: 下列软件包有未满足的依赖关系: vim : 依赖: vim ...

  2. Python基础教程之dict和set

    1. dict Python中的dict等于js中的 map ,使用键-值(key-value)存储,具有极快的查找速度. 如果 我们要根据同学的姓名去查找他的成绩在不用dict的情况下.就需要两个l ...

  3. docker使用国内镜像加速

    在daemon.json文件里以下国内镜像 { "registry-mirrors": [ "https://registry.docker-cn.com", ...

  4. Linux安装Redis、PHP安装Redis扩展模块

    Redis的官方下载: http://redis.io/download   步骤一:下载安装包  步骤二:编译源程序  步骤三:移动文件.便于管理  步骤四:启动 Redis服务  查看是否启动成功 ...

  5. 虚拟机Linux下扩展硬盘的方法

    [原文链接]:http://blog.csdn.net/tianlesoftware/article/details/5642883 装虚拟机时空间划小了,于是又加了5G的空间,折腾了半天,挂上去了. ...

  6. 2019.9.27PHP基础

    PHP 基础语法规范: 1 <?php 开头 ?>结尾 2 php可以单独存在也可以和html等结合使用 3后缀名一般以.php结尾 php4,php5,php6,php7,phtml. ...

  7. Itextpdf + Adobe Acrobat DC填充模板生成pdf快速入门

    Itextpdf + Adobe Acrobat DC填充模板生成pdf快速入门 生成pdf有很多种方法,如通过freemarker,或 使用itextpdf.本文将使用itextpdf生成pdf 1 ...

  8. 第07课:【实战】调试Redis准备工作

    7.1 Redis源码下载与编译 Redis源码下载与编译在前面已经说过了,同学们可以去第04课:GDB常用命令详解(上)学习. 编译成功后,会在src目录下生成多个可执行程序,其中redis-ser ...

  9. Istio 1.4 部署指南

    原文链接:Istio 1.4 部署指南 Istio 一直处于快速迭代更新的过程中,它的部署方法也在不断更新,之前我在 1.0 版本中介绍的安装方法,对于最新的 1.4 版本已经不适用了.以后主流的部署 ...

  10. POJ3415Common Substrings(后缀自动机)

    A substring of a string T is defined as:                 T( i, k)= TiTi +1... Ti+k -1, 1≤ i≤ i+k-1≤| ...