python复习笔记[8]——I/O及文件处理

103 篇文章 0 订阅
23 篇文章 1 订阅


基本I/O操作示例:

# raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符):

text = raw_input("Input something:");

print text;

# if I input "1 + 2", the printed result will be "1 + 2"

 

# input([prompt]) 函数和raw_input([prompt]) 函数基本可以互换,但是input会假设你的输入是一个有效的Python表达式,并返回运算结果。

text = input("Input an expression:");

print text;

# if I input "1 + 2", the printed result will be "3"

 

文件流操作示例:

# file object = open(file_name [, access_mode][, buffering])

"""

file_namefile_name变量是一个包含了你要访问的文件名称的字符串值。

access_modeaccess_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)

buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+ 打开一个文件用于读写。文件指针将会放在文件的开头。

rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

"""

 

# 文件的相关属性

fo = open("function_demo.py", "r");

print fo.name;        # 返回true如果文件已被关闭,否则返回false

print fo.closed;       # 返回被打开文件的访问模式。

print fo.mode;        # 返回文件的名称。

print fo.softspace; # 如果用print输出后,必须跟一个空格符,则返回false。否则返回true

fo.close();                # File对象的close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

 

# 文件追加写入

fo = open("demo.txt", "w+");

fo.write("This is a test line\n");

fo.write("This is a test line\n");

fo.write("This is a test line\n");

fo.write("This is a test line\n");

fo.write("This is a test line\n");

fo.close();

 

# 文件读取

fo = open("demo.txt", "r");

text = fo.read();        # fileObject.read([count]);  如果不指定count会一次读出所有内容

print text;

fo.close();

 

# 文件指针的使用

fo = open("demo.txt", "r");

bufLen = 32;

text = fo.read(bufLen);

print text;

# 输出:

# This is a test line

# This is a te

 

print fo.tell();

# 输出文件指针的位置,当前读了32个字符,此外还有一个换行,所以指针位置为32+1=33

 

text = fo.read(bufLen);

print text;

# 输出:

# st line

# This is a test line

# This

 

print fo.tell();

# 输出:67,由于包含了3个换行,所以指针位置为32+32+3=67

 

fo.seek(0, 0);

# seek(offset [,from]),重新定位文件指针,from是偏移的参照位置(0代表文件开头,1代表当前位置,2代表文件末尾),offset是偏移量

 

text = fo.read(bufLen);

print text;

print fo.tell();

# 输出:

# This is a test line

# This is a te

# 33

 

fo.close();

 

文件和目录操作示例:

import os

 

# 重命名文件

try:

    os.rename("demo.txt", "demo1.txt");

except:

    print "rename failed";

 

# 删除文件

os.remove("demo.txt");

 

# 创建目录

os.mkdir("new folder");

 

# 获取当前目录

currentPath = os.getcwd();

print currentPath;

 

# 改变(切换)当前目录

os.chdir(currentPath + "\\new folder");

os.mkdir("new sub folder");

 

# 删除目录,如果所删除的目录非空,则不能删除,

try:

    os.rmdir("new folder");

except:

    print "failed to remove folder";

 

file对象定义的方法:

方法

描述

file.close()

关闭文件。关闭后文件不能再进行读写操作。

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

file.fileno()

返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

file.isatty()

如果文件连接到一个终端设备返回 True,否则返回 False

file.next()

返回文件下一行。

file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有。

file.readline([size])

读取整行,包括 "\n" 字符。

file.readlines([sizehint])

读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比sizhint较大, 因为需要填充缓冲区。

file.seek(offset[, whence])

设置文件当前位置

file.tell()

返回文件当前位置。

file.truncate([size])

截取文件,截取的字节通过size指定,默认为当前文件位置。

file.write(str)

将字符串写入文件,没有返回值。

file.writelines(sequence)

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

file对象操作文件举例:

import sys

 

file_name = "C:\\Users\\DanielHX\\Desktop\\test.txt"

 

try:

    # 打开文件流

    file = open(file_name, "w");

except IOError:

    print "There was an error writing to", file_name;

    sys.exit();

 

file_finish = "Done"    # 结束标识

file_text = ""                # 要写入的内容

print "Enter '", file_finish, "' When finished";

while file_text != file_finish:              # 如果输出Done则跳出循环

    file_text = raw_input("Enter text: ");        # 读取要输入的内容

    if file_text == file_finish:

        #close the file

        file.close();                           # 保存并关闭文件

        break;

    file.write(file_text);                # 写入读取到的输入内容

    file.write("\n");                       # 写入换行符

file.close();

 

# 读取文件内容

file_name = raw_input("Enter file path: ");

if len(file_name) == 0:

    print "Next time please enter something";

    sys.exit()

try:

    file = open(file_name, "r");

except IOError:

    print "There was an error reading file";

    sys.exit();

file_text = file.read();

file.close();

print file_text;

输出示例:

Enter ' Done ' When finished

Enter text: eqwrqewr

Enter text: dsafadsf

Enter text: rqwerew

Enter text: qew

Enter text: Done

Enter file path: C:\users\DanielHX\Desktop\test.txt

eqwrqewr

dsafadsf

rqwerew

qew

  • 56
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值