#!/usr/bin/python

#Python3 文件

from urllib import request
import pprint,pickle
'''
读和写文件
open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode)
    filename:filename 变量是一个包含了你要访问的文件名称的字符串值。
    mode:mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")   #w' 只用于写 (如果存在同名文件则将被删除)
file.write("hello world!\n how are you? do you miss me?")
file.close()

'''
文件对象的方法
f.read()为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。
size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")   #windows路径下的反斜杠需要转义~只要\\就好, linux就不转义,就/不转义
content = file.read()
print(content)
file.close()

#f.readline() 会从文件中读取单独的一行。换行符为 '\n'。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")
content = file.readline()
print(content)
file.close()

'''
f.readlines() 将返回该文件中包含的所有行。
如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")
content = file.readlines()
print(content)
file.close()

#另一种方式是迭代一个文件对象然后读取每行: 这个方法很简单, 但是并没有提供一个很好的控制。 因为两者的处理机制不同, 最好不要混用。
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")
for line in file:
    print(line, end = "\n")
file.close()

#f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
num = file.write("i love you!")
print("num = ", num)
file.close()

#如果要写入一些不是字符串的东西, 那么将需要先进行转换:
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
tup1 = ("good", 666)
content = str(tup1)
num = file.write(content)
print("num = ", num)
file.close()

'''
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
f.seek()如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
    seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
    seek(x,1) : 表示从当前位置往后移动x个字符
    seek(-x,2):表示从文件的结尾往前移动x个字符
from_what 值为默认为0,即文件开头。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
num = file.write("123456789")
print("num = ", num)
location = file.seek(5)
print("location = ", location)
location = file.seek(2, 0)
print("location = ", location)
file.close()    
    
'''
f.close(),在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。
当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。
当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。
而且写起来也比 try - finally 语句块要简短:
'''
#方法一
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
num = file.write("123456789")
file.close()
#方法二
'''
with open("D:\\hejing\\桌面\\python\\test\\text.txt", "w") as file
file.write("123456789")
print("file.closed : ", file.closed)
'''

'''
 python的pickle模块实现了基本的数据序列和反序列化。
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
基本接口:pickle.dump(obj, file, [,protocol])
有了 pickle 这个对象, 就能对 file 以读取的形式打开:
x = pickle.load(file)
'''
data1 = {"name":"zhangsan", "age":18, "sex":"boy", "loves":["apple", "pear", "banana"]}
data2 = [1,2,3,4,5,6]
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "wb")
pickle.dump(data1, file)
pickle.dump(data2, file)
file.close()

file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "rb")
data1 = pickle.load(file)
data2 = pickle.load(file)
print("data1 = ", data1, "  #######data2 = ", data2)
file.close()

#文件写入也可以进行网站爬虫
response = request.urlopen("http://www.baidu.com")
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
file.write(str(response.read()))
file.close()

python系列十四:Python3 文件的更多相关文章

  1. python系列十:python3函数

    #!/usr/bin/python #-*-coding:gbk-*- '''函数的简单规则:    函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ().    任何传入参数和自变量必 ...

  2. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

  3. struts2官方 中文教程 系列十四:主题Theme

    介绍 当您使用一个Struts 2标签时,例如 <s:select ..../>  在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...

  4. 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘

    孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...

  5. 孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式

    孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 在我学习过的所有语言中,对VB系的语言比较喜欢,而对C系和J系 ...

  6. 初学 Python(十四)——生成器

    初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...

  7. Python第二十四天 binascii模块

    Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...

  8. python第二十九课——文件读写(复制文件)

    自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest): #1.打开两个文件:1个关联读操作,1个关联写操作 fr=open(src,'rb ...

  9. python第二十九课——文件读写(读取读取中文字符)

    演示:读取中文字符 结论: 1).如果不设置encoding,默认使用gbk进行编解码 2).如果编码和解码不一致,最终导致报错,但是一旦设置了errors='ingore',那么就不会报错,而采取乱 ...

随机推荐

  1. Navicat Premium常用快捷键

    在使用操作数据库时,推荐navicat工具.记住一些常用快捷键,可大大提高工作效率,以下是简单总结的几个常用快捷键. 1.ctrl+r 运行当前查询窗口的所有sql语句 2.ctrl+shift+r ...

  2. IOS 多播委托(GCDMulticastDelegate)

    原文:http://www.cnblogs.com/dagehaoshuang/p/4043264.html 在IOS中为了实现回调一般有如下几个方法: delegate 通知中心 block KVO ...

  3. HDU 3861 The King’s Problem(强连通+二分图最小路径覆盖)

    HDU 3861 The King's Problem 题目链接 题意:给定一个有向图,求最少划分成几个部分满足以下条件 互相可达的点必须分到一个集合 一个对点(u, v)必须至少有u可达v或者v可达 ...

  4. C++设计模式之代理模式

        IPhone 6已经在中国香港开售了,圆了在专卖店等候一个多月苹果粉丝的苹果梦.然而对中国大陆而言.须要到9月17日苹果才在大陆开售.这对中国大陆的粉丝而言,不亚于一种煎熬,因此而滋生一种代购 ...

  5. PHP正则表达式教程

    1.入门简介  在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 很可能你使用过Windo ...

  6. unity, 对于Debug.Log输出的log,可以双击定位到代码

    unity, 对于Debug.Log输出的log,可以双击定位到代码

  7. atitit.Atitit.检测文本文件的编码 java  与php版  。Net

    atitit.Atitit.检测文本文件的编码 java  与php版  .Net 1 检测编码原理 Utf8>>gbk 在此转会gbk>>utf 2 工具检测编码 不能使用l ...

  8. JPA ID生成策略(转---)

    尊重原创:http://tendyming.iteye.com/blog/2024985 JPA ID生成策略 @Table Table用来定义entity主表的name,catalog,schema ...

  9. Apache优化提高并发数量

    问题: 我们用lvs做了负载均衡.使用了两台server做login的服务.以及二次资源下载服务.可是在推广过程中.陆续有人反映server登录困难. 解决过程: 1.首先我们查看流量日志以及serv ...

  10. shell脚本之read工具

    #!/bin/bash # -*- coding: utf-8 -*- # echo -n "please input your name: " read name echo &q ...