查看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. 分布式的几件小事(九)zookeeper都有哪些使用场景

    1.zookeeper介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提 ...

  2. 关于redis的几件小事(六)redis的持久化

    1.redis持久化的意义 redis持久化的意义,在于 故障恢复 . 如果没有对数据进行持久化,那么如果redis遇到灾难性的故障,就会丢失所有的数据. 如果通过redis的持久化机制将数据持久化到 ...

  3. 如何查看FQDN

    FQDNFully Qualified Domain Name缩写, 含义完整域名. 例, 台机器主机名(hostname)www, 域缀(domain)example.com, 该主机FQDN应该w ...

  4. kvm虚拟机热迁移

    一.热迁移描述: 相比KVM虚拟机冷迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机热迁移无需拷贝虚拟磁盘文件,但是需要迁移到的宿主机之间需要有相同的目录结构虚拟机磁盘文件,也就是共享存储,本文这部分内 ...

  5. centos7.2升级openssh7.9p1

    Centos7.2版本yum升级openssh版本最高到7.4,想要升级到更高的版本需要重新编译 一.查看当前openssh版本: [root@localhost ~]# ssh -VOpenSSH_ ...

  6. Ubuntu Linux 查看、编辑、比较二进制文件

    查看二进制有以下几种方法: 方法一:hexdump apt-get install libdata-hexdumper-perl 安装好之后就可以直接hexdump your_binary_file ...

  7. 移远模组-BC95-工作模式之间关系

    三种连接状态下,均可发送上行数据( CoAP/UDP): IDLE 下发送数据, 模块会进入 CONNECT 状态: PSM 下发送是数据会唤醒模块, 进入 CONNECT,或者当 TAU(TAU 的 ...

  8. 孕期出血是否先兆流产——B超看婴儿是否在子宫内+hcg值是否过低孕激素不足

    转自:http://blog.sina.com.cn/s/blog_4a869c130102e7nu.html 很多人都经历过孕早期阴道出血,但结局大不一样. 人类受孕后,从一个单细胞逐渐发育成为一个 ...

  9. 【hdu 6155】Subsequence Count

    题意 给定一个 \(01\) 串 \(S_{1...n}\) 和 \(Q\) 个操作. 操作有 \(2\) 种类型: 1. 将 \([l,r]\) 区间所有数取反(\(0→1,\space 1→0\) ...

  10. IDA Pro - 使用IDA Pro逆向C++程序

    原文地址:Reversing C++ programs with IDA pro and Hex-rays 简介 在假期期间,我花了很多时间学习和逆向用C++写的程序.这是我第一次学习C++逆向,并且 ...