py I/O基础

1. 控制台IO

1.1 输入

input():期望输入的是表达式.
raw_input(): 输入的是原始内容. 尽量多用这个.

1.2 输出

  • print(self, *args, sep=' ', end='\n', file=None)
    打印到标准输出流. sep指的是args之间的分隔符, end 指的是输出完毕后的符号.
    print()sys.stdout.write()效果相同.
  • sys.stderr.write(str)
    标准错误流.

1.3 例子

# console io
age=input('how old are u today  ')
age10=10+int(age)
print('In 10 years u will be '+str(age10)+' years old')
input();
"""
input函数只是返回字符串,若想进行算术运算,要强制类型转换
print()语句中,必须将数值类型转换为字符串,不然字符串+数字(拼接)会报错
print(age10)是正确的
"""

2. 文件IO

用Python内置的open()函数打开文件,创建一个file对象,方可调用它的方法进行读写。
f= open(file_name [, access_mode][, buffering])
在windows中,file_name形如”d:/abc.txt”这样,路径用斜线即可.

2.1 读

模式为' r ',此参数可以省略.
f.readline() 读出一行内容, 含换行符.
f.readlines() 读出所有行, 含换行符, 以list形式返回.

2.2 写

普通模式为' w '.追加内容用' a ' . 读写用' r+ '.
f.write(str) 向文件写入, 需要换行的话需明确添加\n.

2.3 其他

f.tell() 获得文件游标位置.
f.seek(offset) 重置文件游标. 0为文件首.
f.close() 用完需要关闭.
更改当前工作目录:

import os
os.chdir('F:/Data')     # 改变路径至F盘的Data文件夹下,注意不是反斜杠
print os.getcwd()       # result: F:\数据集

2.4 编码问题

import codecs, 该模块专门用于处理不同的字符集, 如 ANSI, utf-8等.
codes模块下的函数:

  • open(filename, mode='r', encoding=None, errors='strict', buffering=1)
    encoding=’utf-8’ 或其他, 即可指定读写文件对应的字符集. 它与built-in的open()函数返回值一样.

3. 例子

3.1读列子

import os;
# os.chdir('d:/')
# print os.getcwd()
f=open('d:/in.txt')
print(f.name)

def fun1():
    for line in f.readlines():
        print line.strip()
def fun2():
    while(True):
        line=f.readline()
        #可以放心的用,因为空行的话读到的会是'\n'而不是空串
        if(line!=''):
            print line.strip()
        else: 
            break;
fun1();
#读游标重置
f.seek(0)
print("#####")
fun2();
#用完记得要关掉
f.close()

3.2 写例子

f=open('d:/newpy.txt','w')
f.write('I have an apple')

4. 我的封装

# coding=utf-8
import os
import codecs

def create_file(absolute_path):
    """
    调用方式 形如 create_file('d:/yc/yi/a.txt')
    :param absolute_path: 
    :return: 
    """
    last_slash_index = absolute_path[::-1].index('/') * -1
    dir_path = absolute_path[:last_slash_index]
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)
    file = open(absolute_path, 'w')
    file.close()


def read_file(absolute_path):
    """
    read file
    :param absolute_path:
    :return:a list, each element is an string
    """
    f=codecs.open(absolute_path,encoding='utf-8')
    return f.readlines()

你可能感兴趣的:(python)