参考:Python 文件 I/O

参考:Python OS 文件/目录方法


  目录:

01   open 函数 用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
02   File 对象 file 对象使用 open 函数来创建。
03   rename 方法 用于命名文件或目录。
04   remove 方法 用于删除指定路径的文件。
05   mkdir 方法 用于以数字权限模式创建目录。
    makedirs 方法 用于多级创建目录。
06   chdir 方法 用于改变当前工作目录到指定的路径。
07   getcwd 方法 用于返回当前工作目录。
08   rmdir 方法 用于删除指定路径的目录。
09  

listdir 方法

用于返回指定的文件夹包含的文件或文件夹的名字的列表。
10   input 方法 接受一个标准输入数据。
11   raw_input 方法 将所有输入作为字符串看待,返回字符串类型。
--------  
-----
 -----------------------------------------------------------------------------------------------------

  文本文件读写举例:

# 实现功能:从数据中每隔4行选取一个
def a():
fo = open("D:\\tmp\\a.txt", "r+")
fo_w = open("D:\\tmp\\a1.txt", "w+")
lines_new = fo.readlines()
i = 0
for l in lines_new:
if i%4==0:
fo_w.writelines(l[0:-1])
i+=1
fo.close()
fo_w.close() # 实现功能:为每一个行文件添加后缀
def c():
fo = open("D:\\tmp\\a.txt", "r+")
fo_w = open("D:\\tmp\\a2.txt", "w+")
lines_new = fo.readlines()
for l in lines_new:
fo_w.writelines(l+".zip\n")
fo.close()
fo_w.close()

  详细说明:

序号 类名称  

功能说明

  语法 & 举例
01 open 函数  

====<<<< Description >>>>====

用于打开一个文件,创建一个  file  对象,相关的方法才可以调用它进行读写。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

open (name[, mode[, buffering]])
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  name:一个包含了你要访问的文件名称的字符串值。
◈  mode:mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
◈  buffering:如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
----------------------------------------------------------------------------------

====<<<< mode >>>>====

◈  r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。文件不存在报错。
◈  r+:打开一个文件用于读写。文件指针将会放在文件的开头。文件不存在报错。
◈  w:打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
◈  w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
◈  a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
◈  a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
----------------------------------------------------------------------------------

====<<<< References >>>>====

参考:python文件打开方式详解——a、a+、r+、w+区别
参考:python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)

 
# 获取栅格数据
arcpy.env.workspace=r"D:\01-Working\2017\20171204-IDL_Average\temp\TSM"
rs = arcpy.ListRasters() # 遍历栅格数据获取统计信息
# 首先需要建立栅格文件
# 将数据结果保留两位小数
# 输出到txt文档中 fo = open("D:\\01-Working\\2017\\2017_Average\\temp\\tsm_stats.txt", "w+")
for r in rs:
ro = arcpy.Raster(r)
fo.writelines(ro.name + "\n")
fo.writelines("MAX: " + str(round(ro.maximum, 2)) + "\n")
fo.writelines("MIN: " + str(round(ro.minimum, 2)) + "\n")
fo.writelines("MEAN: " + str(round(ro.mean, 2)) + "\n\n") fo.close()

读入文件示例:

>>> import os
>>> fo = open("D:\\03-Study\\Python\\test\\test.txt", "r+")
>>># 读取全部为一个字符串(read)
>>> lines = fo.read()
>>> lines
'Line 1: aaaaaa\nLine 2: bbbbbb\nLine 3: cccccc\nLine
>>> print lines
Line 1: aaaaaa
Line 2: bbbbbb
Line 3: cccccc
>>> fo.tell()
110L
>>># 指针返回初始位置
>>> fo.seek(0)
>>> fo.tell()
0L
>>># 读取数据的一行(readline)
>>> lines_new = fo.readline()
>>> lines_new
'Line 1: aaaaaa\n'
>>># 读取剩下的数据为一个列表(readlines)
>>> lines_new2 = fo.readlines()
>>> lines_new2
['Line 2: bbbbbb\n', 'Line 3: cccccc\n']
>>> fo.close()

写入文件示例:

>>> fo = open("D:\\03-Study\\Python\\test\\test.txt", "w+")
>>> a = "Alex Lee"
>>> b = ["a", "b", "c"]
>>> fo.write(a)  #写入全部(write)
>>> fo.write("\n") #换行符
>>> fo.writelines(b) #写入列表,无换行符(writelines)
>>> for i in range(0, len(b)):
... b[i] = b[i] + "\n"
...
>>> print b
['a\n', 'b\n', 'c\n']
>>> fo.write("\n") #换行符
>>> fo.writelines(b) #写入列表,有换行符
>>> fo.close()
>>> fo = open("D:\\03-Study\\Python\\test\\test.txt", "r+")
>>> print fo.read()
Alex Lee
abc
a
b
c
02 File 对象  

====<<<< Description >>>>====

file 对象使用 open 函数来创建。
----------------------------------------------------------------------------------

====<<<< Properties >>>>====

◈   file.name:返回文件的名称。
◈   file.mode:返回被打开文件的访问模式。
◈   file.closed:返回true如果文件已被关闭,否则返回false。
----------------------------------------------------------------------------------

====<<<< Methods >>>>====

◈   file.writelines (sequence):向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
◈   file.write (str):将字符串写入文件,没有返回值。要自己加换行符
◈   file.truncate ([size]):用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。
◈   file.tell ():返回文件的当前位置,即文件指针当前位置。
◈   file.seek (offset[, whence]):用于移动文件读取指针到指定位置。
◈   file.readlines ([sizeint]):读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
◈   file.readline ([size]):读取整行,包括 "\n" 字符。
◈   file.read ([size]):从文件读取指定的字节数,如果未给定或为负则读取所有。
◈   file.next ():返回文件下一行。
◈   file.close ():关闭文件。关闭后文件不能再进行读写操作。
----------------------------------------------------------------------------------

====<<<< References >>>>====

参考:python中readline判断文件读取结束的方法

 
03 rename 方法  

====<<<< Description >>>>====

用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。(相当于移动文件)
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.rename (src, dst)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  src:要修改的目录名。
◈  dst:修改后的目录名。

 
>>> import os
>>> os.rename(r"D:\test.txt", r"D:\test1.txt")
>>> os.rename(r"D:\test1.txt", r"D:\test2.txt")
04 remove 方法  

====<<<< Description >>>>====

用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.remove (path)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  path:要移除的文件路径。

参考:python 删除文件、目录(shutil.rmtree())

 
# 实现删除文件夹内的HDF文件
import os
rootdir = r"D:\tmp\tmp"
for file in os.listdir(rootdir):
if file.find("hdf") > 0:
os.remove(os.path.join(rootdir, file))
 05 mkdir 方法  

====<<<< Description >>>>====

用于以数字权限模式创建目录。默认的模式为 0777 (八进制)。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.mkdir (path[, mode])
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  path:要创建的目录。
◈  mode:要为目录设置的权限数字模式。

 
>>> import os
>>> os.mkdir(r"D:\folder")
  makedirs 方法  

====<<<< Description >>>>====

os.makedirs() 方法用于递归创建目录。像 mkdir(), 但创建的所有intermediate-level文件夹需要包含子目录。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.makedirs (path[, mode])
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  path:要创建的目录。
◈  mode:要为目录设置的权限数字模式。

   
 06 chdir 方法  

====<<<< Description >>>>====

用于改变当前工作目录到指定的路径。(工作空间修改)
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.chdir (path)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  path:要切换到的新路径。

 
>>> import os
>>> print os.getcwd()
D:\01-Working\2018\20180115-浓烟专题图
>>> os.chdir(r"D:\03-Study\Python\test")
>>> os.rmdir("folder")

07 getcwd 方法  

====<<<< Description >>>>====

用于返回当前工作目录。(import sys)
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====


os.getcwd
()

 
08 rmdir 方法  

====<<<< Description >>>>====

用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.rmdir (path)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  path:要删除的目录路径。

 
 09 listdir 方法  

====<<<< Description >>>>====

用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 '.' 和'..' 即使它在文件夹中。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.listdir (path)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  path:需要列出的目录路径。

 
>>> import os
>>> print os.listdir(r"D:\test")
['11.txt', 'cnblog1.txt', 'frame.ui']
10 input 方法  

====<<<< Description >>>>====

Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。
Python2.x 中 input() 相等于 eval(raw_input(prompt)) ,用来获取控制台的输入。
raw_input() 将所有输入作为字符串看待,返回字符串类型。而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )。

注意:input() 和 raw_input() 这两个函数均能接收 字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。
除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>===

input ([prompt])
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  prompt:可选,字符串,可作为一个提示语。

 
>>> a = input("input:")
input:123
>>> type(a)
<type 'int'>
>>> a
123
>>> a = input("input:")
input:"alex"
>>> a
'alex'
>>> a = input("input:")
input:alex Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
a = input("input:")
File "<string>", line 1, in <module>
NameError: name 'alex' is not defined
11 raw_input 方法  

====<<<< Description >>>>====

用来获取控制台的输入。
将所有输入作为字符串看待,返回字符串类型。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

raw_input ([prompt])
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  prompt:可选,字符串,可作为一个提示语。

 
>>> a = raw_input("input:")
input:123
>>> type(a)
<type 'str'>
>>> a
'123'
>>> a = raw_input("input:")
input:alex
>>> a
'alex'
--
-----
 
--------------------------------------------------
   

【289】◀▶ Python I/O & 读写文本文件的更多相关文章

  1. python 读写文本文件

    本人最近新学python ,用到文本文件的读取,经过一番研究,从网上查找资料,经过测试,总结了一下读取文本文件的方法. 1.在读取文本文件的时无非有两种方法: a.f=open('filename', ...

  2. 【转】Python之文件读写

    [转]Python之文件读写 本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 ...

  3. (转)Python之文件读写

    Python之文件读写 原文:https://www.cnblogs.com/huilixieqi/p/6494891.html 本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 ...

  4. Python IO编程-读写文件

    1.1给出规格化得地址字符串,这些字符串是经过转义的能直接在代码里使用的字符串 需要导入os模块 import os >>>os.path.join('user','bin','sp ...

  5. Java读写文本文件操作

    package com.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; ...

  6. delphi读写文本文件

    delphi读写文本文件   在工作中遇到了这样一个问题,使用PLSQL将一个表的数据转化成一些列的insert语句存储到一个.sql文本中,我本来想使用access数据库中的查询视图一次执行这些语句 ...

  7. Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  8. 【Python】文件读写操作

    Python的文件读写有点类似php的文件读写.php的文件读写已经在<[php]让记事本成为你调控变量的控制台>(点击打开链接)说过了,以下用一个小样例说明Python的文件读写. 在F ...

  9. 【转发】Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

随机推荐

  1. [置顶] Android玩转百度地图Sha1获取正确姿势?

    场景一 由于最近项目钟要用到定位功能因此肯定需要用到地图以及地位功能,相信大家也知道目前国内比较出名的地图像百度.高德.腾讯等这些还是用到比较多的,于是思考了一下决定还是用百度,相信老司机们都知道的哈 ...

  2. HAWQ取代传统数仓实践(十二)——维度表技术之分段维度

    一.分段维度简介 在客户维度中,最具有分析价值的属性就是各种分类,这些属性的变化范围比较大.对某个个体客户来说,可能的分类属性包括:性别.年龄.民族.职业.收入和状态,例如,新客户.活跃客户.不活跃客 ...

  3. 运用 jenkins 让你的项目优雅的持续化集成

    0.到系统管理->系统设置 1.安装插件 Publish over SSH 2.配置 Publish over SSH 参数 1.pass 是私钥密码,此私钥文件放在安装 jenkins 的主机 ...

  4. 关于python模拟登录的一点实践

    不久前,通过网上查阅各种资料,一直想利用python来实现模拟登录的功能,通过csdn汪海的博客学会了一点,但也只能算个皮毛,亦或皮毛都算不上. 边查阅资料边写一个小东西,起初想写一个程序,通过暴力破 ...

  5. HihoCoder 1068 RMQ-ST算法+BIT

    以前都是用的BIT或者线段树(前者多一些). 对于ST(Sparse Table),在求倍增or公共祖先(LCA)时见过,说明还有其他用处,所以还是学习一下. 首先是预处理,用动态规划(DP)解决. ...

  6. Android开源框架-Annotation框架(以ViewMapping注解为例)

    Annotation 分类 1 标准 Annotation 包括Override, Deprecated, SuppressWarnings,标准 Annotation 是指 Java 自带的几个 A ...

  7. C# 数组、ArrayList和List三者的区别

    在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...

  8. C#防止程序多次运行

    经过我的测试,还比较好用,但是有个问题,如果不注销,用另一个用户进入,则程序不能判断出已运行.所以只限于用在单用户环境,还是不太完美. class Program { [STAThread] stat ...

  9. rac ASM下最简单归档开启/关闭方法

    原创作品,出自 “深蓝的blog” 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/47172639本次先来介绍一下在rac环 ...

  10. BZOJ3670:[NOI2014]动物园

    浅谈\(KMP\):https://www.cnblogs.com/AKMer/p/10438148.html 题目传送门:https://lydsy.com/JudgeOnline/problem. ...