基本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_name:file_name变量是一个包含了你要访问的文件名称的字符串值。 access_mode:access_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 |