python文件和元组
- python文件操作
相较于java,Python里的文件操作简单了很多
python 获取当前文件所在的文件夹:
os.path.dirname(__file__)
写了一个工具类,用来在当前文件夹下生成文件,这样方便
class Util():
"""工具类""" @classmethod
def get_file_url(cls, file_name):
"""获取当前文件夹的路径"""
return os.path.join(os.path.dirname(__file__), file_name)
向一个文件中写数据,w表示write,用于写入
myfile = open("a.txt", "w")
myfile.write("hello2 world \n")
myfile.write("good bye \n")
打开文件查看内容为

写完文件后如果不在操作文件,记得关闭文件,养成好习惯。
myfile.close()
一般文件的读取都是放在try-except块中的,其中文件的关闭放在finally 中,这样能保证文件始终是关闭的。
读取文件
myfile = open(Util.get_file_url("a.txt"),'r')
print "第一行",myfile.readline() # 读取第一行
print "第二行",myfile.readline() # 读取第二行
print "所有行",myfile.read()
readline()方法一次读取文件中的一行,由于文件只有2行,所以执行2次readline()后没有再可以读的数据了,read()方法会将文件的所有内容读入一个字符串。如果要讲文件指针重置
到最开始的位置,可以使用如下方法
myfile.seek(0) # 将文件重置到最开始的地方
read() 方法可以指定读取的字节大小,如read(6)
myfile = open(Util.get_file_url("aaa.xxx"),'r')
new_str = myfile.read(6) # aaa.xxx的内容为"你好",读取6个字节则可以刚好将字符串读出来,一个中文3个字节
使用迭代器读取文件
iterator = open(Util.get_file_url("aaa.xxx"),'r')
for line in iterator:
print line
读取文件到字符串列表
lines = myfile.readlines() # 将文件的每一行作为一个元素存入列表中
- 用pickle存储python的原声对象
class Person(object):
def __init__(self, name='', age=0):
self.age = age
self.name = name def __str__(self):
return self.name+" -- "+str(self.age) p = Person('zhangsan', 24)
p.sex = '男'
p.salary = 12000 # 将对象存入文件
to_file = open(Util.get_file_url("aaa.txt"),'wb')
pickle.dump(p, to_file)
to_file.close()
print p.name
# 将存入文件中的对象load进来
from_file = open(Util.get_file_url("aaa.txt"),'rb') # rb 表示读取二进制文件
person = pickle.load(from_file)
print person
- 元组操作(tuple)
元组的存在组要是为列表提供完整性,元组具有不可变性,可以确保在程序中不会被另一个引用修改。它类似于其他语言中的常数。
元组的在python中属于tuple 类型常见的操作:
# 元组定义
tuple1 = () # 空的元组
tuple2 = (1,) # 包含1个元素的元组
int1 = (1) # 包含一个元素的变量
tuple4 = (1, 2, 3, 4,2)
# 遍历元组
for tup in tuple4:
print tup
print '*' * 55
# 获取指定下标的元素
print tuple4[2]
# 获取指定数的下标
print tuple4.index(4) # 获取指定值出现的次数
print tuple4.count(2) print tuple4[1:3] # 含左不含右
- 简介python 列表中的引用和拷贝
python中一切皆为对象,赋值只是拷贝了引用。举个例子:
>>> list1=[1,2,3,4]
>>> print list1
[1, 2, 3, 4]
>>> x = list1
>>> print x
[1, 2, 3, 4]
>>> list1[1]='abc'
>>> print list1
[1, 'abc', 3, 4]
>>> print x
[1, 'abc', 3, 4]
如果有其他面向对象编程的经验就不难理解,那么如何将list1列表完全赋值给x呢,我们可以使用如下的方法
>>> x = list(list1) (也可以 x = list1[:])
>>> print x
[1, 'abc', 3, 4]
>>> list1[1]=2
>>> print list1
[1, 2, 3, 4]
>>> print x
[1, 'abc', 3, 4]
对于dict 类型,可以使用如下的方式,这样就实现了完整的拷贝
>>> dict1 = {"a":1,"b":2}
>>> dict2 = dict1.copy()
注意:通过 copy 和 list() 或list1[:]的方式生成的只是顶层拷贝,并不能赋值嵌套的数据。举个例子:
>>> L = [1, 2, 3]
>>> dict1 = {"list": L}
>>> tuple5 = (dict1.copy(),)
>>> print tuple5
({'list': [1, 2, 3]},)
>>> L[0] = "a"
>>> print L
['a', 2, 3]
>>> print tuple5
({'list': ['a', 2, 3]},)
如果想要一个深层次的拷贝结果,需要使用如下的方法
import copy
res_copy = copy.deepcopy(tuple5) #此方法将会进行深层次拷贝
好了,先写到这吧,算是总结完了
python文件和元组的更多相关文章
- python学习之元组与文件
元组 元组是最后一个python集合类型.元组由简单的对象构成,元组与列表非常相似,只不过元组不能在原处修改,并且通常写成圆括号,虽然元组部支持任何方法调用,但元组具有列表的大多数属性. 实际应用中的 ...
- 【Python文件处理】递归批处理文件夹子目录内所有txt数据
因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...
- Python文件基础
===========Python文件基础========= 写,先写在了IO buffer了,所以要及时保存 关闭.关闭会自动保存. file.close() 读取全部文件内容用read,读取一行用 ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python文件系统功能:os模块
Python文件系统功能:os模块 1.os模块方法分类 (1)目录: chdir() 改变工作目录 chroot() 设定当前进程的根目录 listdir() 列出指定目录下的所有文件名 mkdir ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- python文件、文件夹操作OS模块
转自:python文件.文件夹操作OS模块 '''一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: ...
- 4、Python文件对象及os、os.path和pickle模块(0530)
文件系统和文件 1.文件系统是OS用于明确磁盘或分区上的文件的方法和数据结构---即在磁盘上组织文件的方法: 文件系统模块:os 2.计算机文件(称文件.电脑档案.档案),是存储在某种长期储存设备或临 ...
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
随机推荐
- 从IE6到IE11上运行WebGL 3D遇到的各种坑
这篇<基于HTML5的电信网管3D机房监控应用>基于WebGL技术的应用让少同学对HTML5 3D的应用产生了兴趣和信心,但有不少网友私信询问WebGL如何运行在老的IE678910浏览器 ...
- f4: Facebook’s Warm BLOB Storage System——Erasure Code
Facebook在OSDI 2014上发表论文f4: Facebook's Warm BLOB Storage System,这个系统主要目的就是降低存储成本,在容忍磁盘,主机,机架,数据中心的同时提 ...
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架开发随笔一
公司业务量比较大,接了很多项目,为了缩短开发周期老板让我牵头搭建了一个敏捷开发框架. 我们主要的业务是做OA.CRM.ERP一类的管理系统,一个通用的后台搭出来,再配合一些快速开发的组件开发效率能提高 ...
- wpf 查找页面的所有TextBox
private void EnumVisual(Visual myVisual) { for (int i = 0; i < VisualTreeHelper.GetChildrenCount( ...
- 不经意间网易开源镜像去掉了FreeBSD的镜像
http://mirrors.163.com/ FreeBSD已经到了这么不招人待见的地步了么? 网易曾经可是FreeBSD的大户啊.
- DP---Mahjong tree
HDU 5379 Problem Description Little sun is an artist. Today he is playing mahjong alone. He suddenl ...
- 泛函编程(24)-泛函数据类型-Monad, monadic programming
在上一节我们介绍了Monad.我们知道Monad是一个高度概括的抽象模型.好像创造Monad的目的是为了抽取各种数据类型的共性组件函数汇集成一套组件库从而避免重复编码.这些能对什么是Monad提供一个 ...
- java初始化构造函数调用顺序
类初始化时构造函数调用顺序: (1)初始化对象的存储空间为零或null值: (2)调用父类构造函数: (3)按顺序分别调用类成员变量和实例成员变量的初始化表达式: (4)调用本身构造函数. 例子 ...
- hibernate3 Duplicate class/entity mapping(异常)
hibernate3 Duplicate class/entity mapping(异常) 代码: Configuration config = new Configuration().ad ...
- Maven仓库分类
MAVEN仓库分类 Maven仓库分为:本地仓库+远程仓库两大类 远程仓库又分为:中央仓库+私服+其它公共远程仓库 1,在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件 2,Ma ...