python IO流操作

学习完本篇,你将会独立完成

  • 实现操作系统中文件及文件目录的拷贝功能。
  • 将目标图片拷贝到指定的目录中
  • 实现一个自动阅卷程序, Right.txt保存正确答案,xx(学生姓名).txt代表学生答案。阅卷程序完成阅卷并按照成绩的高低保存到 成绩.txt文件中(格式为 xx(学生姓名):xx分)

输出

  • 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下:
print  “hello”,”world” #注意“,”打印时是空格
print “number:”,3
print “number:%d” %3
print “number:%d” %(3)
print “number:%d,%d” %(3,6)

输入

  • Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘:

    1.input([prompt])

    2.raw_input([prompt])
  • input输入数字返回结果,raw_iput输入字符串返回结果,input接受输入表达式
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = raw_input("请输入:");
print "你输入的内容是: ", str #!/usr/bin/python #
-*- coding: UTF-8 -*-
str = input("请输入:");
print "你输入的内容是: ", str

文件操作

打开文件

  • Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作。:

    1.open 函数

    Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写

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

    各个参数的细节如下:

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

    2.access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。

    所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式

    为只读(r)。

    3.buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,

    访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的

    寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

文件访问模式表

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

file对象的属性

  • 一个文件被打开后,会返回一个file对象,可以通过file对象得到有关该文件的各种信息。

    以下是列表中是文件的各种操作:
模式 描述
file.closed 返回true如果文件已被关闭,否则返回false。
file.mode 返回被打开文件的访问模式。
file.name 返回文件的名称。
file.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true.
# -*- coding: UTF-8 -*-
fo = open("foo.txt", "wb") # 打开一个文件
print "文件名: ", fo.name
print "是否已关闭 : ", fo.closed
print "访问模式 : ", fo.mode
print "末尾是否强制加空格 : ", fo.softspace
打印结果:
文件名: foo.txt
是否已关闭 : False
访问模式 : wb
末尾是否强制加空格 : 0

close方法

  • File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
  • 当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
  • 语法:fileObject.close();
# -*- coding: UTF-8 -*-
fo = open("foo.txt", "wb") # 打开一个文件
print "文件名: ", fo.name #关闭打开文件
fo.close()
打印结果:
文件名: foo.txt

write方法

  • write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
  • write()方法不会在字符串的结尾添加换行符('\n'):
  • 语法:fileObject.write(string);
# -*- coding: gbk-*-
fo = open("foo.txt", "wb") # 打开一个文件
print "文件名: ", fo.name
fo.write( “这是我编写第一个打开文件成程序\n"); #关闭打开文件
fo.close()
打印结果:
文件名: foo.txt

read()方法

  • read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

  • 语法: fileObject.read([count]);

    说明:被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。

# -*- coding: gbk-*-
fo = open("foo.txt", " r+ ") # 打开一个文件
str = fo.read(10);
print "读取的字符串是 : ", str
#关闭打开文件
fo.close()

文件重命名

  • Python的os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。
  • rename()方法:

    rename()方法需要两个参数,当前的文件名和新文件名
  • 语法:os.rename(current_file_name, new_file_name)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
# 重命名文件test1.txt到test2.txt。
os.rename( "test1.txt", "test2.txt" )

remove方法

  • remove()方法删除文件,需要提供要删除的文件名作为参数。
  • 语法: os.remove(file_name)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
# 删除一个已经存在的文件test2.txt
os.remove("test2.txt")

mkdir()方法

  • 使用os模块的mkdir()方法在当前目录下创建新的目录们。需要提供一个包含了要创建的目录名称的参数。
  • 语法: os.mkdir("newdir")
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
# 创建一个文件test2.txt
os.mkdir("test2.txt")

chdir()方法

  • chdir()方法来改变当前的目录。chdir()方法需要的一个参数是你想设成当前目录的目录名称。

    语法: os.chdir("newdir")
  • getcwd()方法显示当前的工作目录。

    语法: os.getcwd()
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
# 将当前目录改为“C:/"
os.chdir("C:/")
# 给出当前的目录
print os.getcwd()

rmdir()方法

  • rmdir()方法删除目录,目录名称以参数传递。
  • 在删除这个目录之前,它的所有内容应该先被清除。

    语法: os.rmdir('dirname')
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
# 删除”/tmp/test”目录
os.rmdir( "/tmp/test" )

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) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

python IO流操作的更多相关文章

  1. Java IO流操作汇总: inputStream 和 outputStream【转】

    我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...

  2. Hadoop基础-通过IO流操作HDFS

    Hadoop基础-通过IO流操作HDFS 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上传文件 /* @author :yinzhengjie Blog:http://www ...

  3. IO流----操作文件的9种方法代码实现

    IO流----操作文件的9种方法代码实现: 1:使用字节流读写数据: 四种方式: method1:          每次读写一个字节,边读边写: /* * 复制文本文件. * * 数据源:从哪里来 ...

  4. io流操作大全

    JAVA 中的IO流 一.流的概念        流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部 ...

  5. java+++IO流操作

    序:IO流的操作主要分为两种读和写.一方面:我们可以通过不加缓冲类字符流BufferedReader/Writer和字节流BufferedInputStream/OutputStream来进行简单的读 ...

  6. IO流操作详解

    注:FileReader继承InputStreamReader类,InputStreamReader实现Reader接口,其他同理. 对于文件内容的操作主要分为两大类 分别是: 字符流 字节流 其中, ...

  7. Java 常用IO流操作详解

    1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中. 2.IO流的分类 图示:(主要IO流) 3.字节流 ...

  8. Java IO流操作 (I)

    1.FileWriter 写数据---输出流---由控制台向文件中写数据 import java.io.FileWriter; import java.io.IOException; /* * 写数据 ...

  9. [JAVA]标准IO流操作

    import java.io.*; /** * @Description: * @projectName:JavaTest * @see:PACKAGE_NAME * @author:郑晓龙 * @c ...

随机推荐

  1. 新手安装eclipse或idea后进行配置、快捷键、插件总结

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  2. RationalRose使用

    UML 概述 什么是 UML? Unified Modeling Language (UML)又称统一建模语言或标准建 模语言,是始于 1997 年一个 OMG 标准,它是一个支持模型化 和软件系统开 ...

  3. Mysql数据库优化(1)

    1.尽量不要留null select id from t where num is null,可以,但尽量不要留null,null也占空间:使用not null填充数据库,像varchar(100)这 ...

  4. 新版数据库分页方法(Sql server2012)

    1. ROW_NUMBER() 的分页方法 dbcc freeproccache dbcc dropcleanbuffers set statistics time on set statistics ...

  5. S3C2440—6.串口的printf实现

    文章目录 一.框架 二.printf函数原理 2.1 printf的声明 2.2 参数解读 2.3 如何得到可变参数的值 2.4 解决变参的宏定义 2.5 完成printf函数的封装 三.结合UART ...

  6. Linux部署达梦数据库(完全版)

    环境准备 数据库下载去http://www.dameng.com 1.下载好达梦数据库iso上传(通过xftp)到你自己存在的目录(/opt) 2.将你上传的iso文件挂载到其它的目录下面(mount ...

  7. Vue3 Composition API写烦了,试试新语法糖吧—setup script

    前言 Vue3发布近一年了,相信大家对Vue3的新特性,新语法都很熟悉了.那么在使用Composition API的过程中,有没有觉得整个过程比较繁琐.比如你的模板里用到了大量的state和方法的时候 ...

  8. L298N的接线和详细使用方法

    文章说明: 名词概念(为了方便易懂,我就通俗的表达): 逻辑电压:控制板子执行程序的电压. 驱动电压:输出口AB的电压. 逻辑电流:驱动板执行程序的电流. 驱动电流:输出口AB的电流. 本人调试此款L ...

  9. Mac 证书错误

    在 Mac 操作系统安装 Python 3.6 或以上版本时,可能会遇到证书错误:Error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify ...

  10. Visual Studio调试器指南---多线程应用程序调试(一)

    线程是操作系统向其授予处理器时间的指令序列. 在操作系统中运行的每个进程都包含至少一个线程. 包含多个线程的进程称为多线程.有多个处理器.多核处理器或超线程进程的计算机可以同时运行多个线程. 使用多个 ...