【python】文件的输入和输出

1.os模块

2.os.path 模块

3.实例

1. os模块

对文件系统的访问大多通过python的os模块实现,其中os
模块负责大部分的文件系统操作,包括删除/重命名文件,遍历目
录树,管理文件访问权限等。

2.os.path 模块,os.path完成一些针对路径名的操作,包括管理和操作文件路径名中的各个部分,获取文件或子目录信息,文件路径查询等操作。

3.实例

3.1 实例1:os模块和path模块接口使用


# encoding:utf-8
‘‘‘
Created on 2014-6-5

@author: Administrator
‘‘‘

import os

if __name__ == "__main__":
for tempdir in (‘/tmp‘, r‘c:\temp‘):
if os.path.isdir(tempdir):
break

else:
print "no temp directory is available"
tempdir = ‘‘

if tempdir:
os.chdir(tempdir)
cwd = os.getcwd()
print "***current temporary directory***"
print cwd

print "***creating example directory..."
os.mkdir("example")
os.chdir("example")
cwd = os.getcwd()
print "***new working directory..."
print cwd

print "***original directory listing:"
print os.listdir(cwd)

print "***creating test file"
fobj = open("test", "w")
fobj.write("%s%s" % ("line1", os.linesep))
fobj.write("%s%s" % ("line2", os.linesep))
fobj.close()

print "***updating directory listing:"
print os.listdir(cwd)

print "***renaming test to filetest.txt"
os.rename("test", "filetest.txt")

print "***updating directory listing:"
print os.listdir(cwd)

path = os.path.join(cwd, os.listdir(cwd)[0])
print "***full file pathname:"
print path

print "***(pathname,basename)="
print os.path.split(path)
print "***(filename,extension)="
print "***basename:", os.path.basename(path)
print os.path.splitext(os.path.basename(path))

print "***displaying file contents:"
fobj = open(path)
for eachline in fobj:
print eachline
fobj.close()

print "***deleting test file"
os.remove(path)
print "***updating directory listing:"
print os.listdir(cwd)

print "deleting test directory"
os.chdir(os.pardir)
os.rmdir("example")

print "***Done!"

name = raw_input(u"请输入名字:".encode("gbk"))
count=1;
for mytuple in os.walk(name, True):
print "%s:%s" %(count,mytuple[0])
count=count+1
print "%s:%s" %(count,mytuple[1])
count=count+1
print "%s:%s" %(count,mytuple[2])
count=count+1

3.2 实例2:目录文件深度遍历


"""文件目录深度遍历"""
def listdir(mydir, myfile):
global fmt
global filenum
lists = os.listdir(mydir) # 列出目录下的所有文件和目录
for line in lists:
filepath = os.path.join(mydir, line)
if os.path.isdir(filepath): # 如果filepath是目录,则再列出该目录下的所有文件
myfile.write(fmt + line.decode("gbk") + ‘\\‘ + ‘\n‘)
print fmt + line.decode("gbk") + ‘\\‘ + ‘\n‘,
filenum = filenum + 1

# 格式化输出目录
tmp = fmt
fmt = fmt + 4 * "-"
listdir(filepath, myfile)
fmt = tmp
else: # 如果filepath是文件,直接列出文件名
myfile.write(fmt + line.decode("gbk") + ‘\n‘) # 显示中文文件
print fmt + line.decode("gbk") + ‘\n‘,
filenum = filenum + 1

if __name__ == ‘__main__‘:
mydir = raw_input(‘please input the path:‘)
listfile = open(‘listfile.txt‘, ‘w‘)
listfile.write(str(mydir).decode("gbk") + ‘\n‘)
listdir(str(mydir), listfile)
listfile.write(‘all the file num is ‘ + str(filenum))
listfile.close()

结果:


E:\KuGou
----Beyond - 不再犹豫.mp3
----Beyond - 喜欢你.mp3
----Beyond - 无尽空虚.mp3
----Beyond - 海阔天空.mp3
----Beyond - 谁伴我闯荡.mp3
----Beyond、黄家驹 - 海阔天空.m4a
----Cache--------3eb439fd4096a2b76ae8c1020f6c4007.kg!
----Lyric--------Beyond - 不再犹豫-2bcba2349cd515bf1110613c9a44acf9.krc
--------Beyond - 光辉岁月-4dc283c7ac7bd5d9bf9b72f167d4ec7d.krc
--------Beyond - 喜欢你-a48d906b0210cefc2d5d12353d3e7488.krc
--------Beyond - 无尽空虚-6ade279c2a7da6ce893e581ff22f7817.krc
--------Beyond - 海阔天空-f87ab6af058e9c5864a81a78e9f62967.krc
--------吴雨霏 - 今夜烟花灿烂-5810060a70bf1f583f92eb5d541d65e4.krc
--------周华健 - 让我欢喜让我忧-71c82c68ebab8ca9f97f460e7e8a58fa.krc
----Temp--------1d4182a7b02d9ea3185ddbbdece48473.kgtemp
--------2bcba2349cd515bf1110613c9a44acf9.kgtemp
--------4dc283c7ac7bd5d9bf9b72f167d4ec7d.kgtemp
----五月天 - 我不愿让你一个人.mp3
----刘德华 - 一起走过的日子.mp3
----刘德华 - 冰雨.mp3
----刘德华 - 北国之春.mp3
all the file num is 96

3.3 实例3: os.walk 目录树


"""文件目录广度遍历"""
def walkdir(mydir,fileinfo,topdown=True):
for root, dirs, files in os.walk(mydir, topdown):
for name in files:
print(name)
fileinfo.write(name + ‘\n‘)
for name in dirs:
print(os.path.join(name))
fileinfo.write(os.path.join(root,name) + ‘\n‘)

if __name__ == ‘__main__‘:
mydir = raw_input(‘please input the path:‘)
walkfile = open(‘walkfile.txt‘, ‘w‘)
walkfile.write(str(mydir).decode("gbk") + ‘\n‘)
walkdir(str(mydir), walkfile)
walkfile.close()

说明:

1、raw_input
接收中文路径输入,在windows下需要保证eclipse控制台设置编码为GBK,具体设置为,右键单击需要运行的python文件,选择Run
as-----Run configurations

设置Common编码为GBK,否则raw_input 结果为乱码

2.
保存文件路径名到文件中时,需要使用str.encode(“gbk”)的encode方式,同时保证写入文件路径名的文件格式为GBK,否则可能出现中文乱码

3.os.walk()调用的返回结果为一个对象,其中每个元素为一个三元组,三元组分别为(目录,子目录,目录下文件),(子目录,子目录下的子目录,子目录下的文件)……

时间: 2024-10-18 03:33:21

【python】文件的输入和输出的相关文章

Python 文件的输入与输出

1. 文本文件的读写主要通过open()所构建的文件对象来实现.我们打开一个文件,并使用一个对象来表示该文件 , f = open(d,r) 其中d是文件名,r是模式 "r" 文件只读,使用 f.write()会报错 "w" 用于写入,每次使用f.write()都会把上一次给覆盖掉 "r+" 用于读写 "a" 文件追叫,每次写入会追加在前一次后面 ##1. 创建文件对象(%%在编代码的文件夹下建一个new.txt) f=ope

C++:文件的输入和输出

1.共同的打开文件方式: fin.open("test.txt",ios::binary) fout.open("test.txt",ios::binary) fboth.open("test.txt",ios::in|ios::out|ios::binary) 或者 fistream fin("test.txt",ios::binary) fostream fout("test.txt",ios::bin

文件的输入和输出

文件的输入和输出 1.程序写入文件 ,应遵循以下规则(1)创建一个ofstream对象来管理输出流(2)将对象和输出流关联起来(3)以使用cout的方式来使用该对象.例如: ofstream fout ; //创建对象 fout.open(“jar.txt”) ; //关联文件 注意: Ofstream fout (“jar.txt”) ;//跟上面的两条语句是等效的那么关于第三点:使用cout的方式来使用该对象,比如: fout << “ I love you !”; 原因:fout对象的类

文件格式化输入和输出

在控制台操作时,使用的格式化输入和输出为scanf和printf,那么对文件的IO操作也可以使用fscanf和fprintf,它们的使用如下: #include <stdio.h> #include <string.h> #include <stdlib.h> const int LENGTH=80; int main(void){ long num1=234567L; long num2=345123L; long num3=789234L; long num4=0L

雷林鹏分享:Ruby 文件的输入与输出

Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. write. gets. puts. readline. getc 和 printf. 本章节将讲解所有 Ruby 中可用的基础的 I/O 函数.如需了解更多的函数,请查看 Ruby 的 IO 类. puts 语句 在前面的章节中,您赋值给变量,然后使用 puts 语句打印输出. puts 语句指示程序

谈谈python的文件处理——文件的输入与输出

简单介绍一下python里IO的几种常用方式.当然除了以下介绍的几种方式之外,还可以参考python的手册,例如我想查找raw——input函数的用法,我就可以直接使用命令:python -m pydoc raw_input(windows底下)来查看使用方法,使用完毕时候,输入“q”作为退出.下面进入正题: 一.python中的输入 1.与命令行的“博弈”——raw_input函数 #Input: age = raw_input("How old are you? ") height

sqlplus操作--文件的输入与输出

再sqlplus中执行脚本sql语句,并使结果输出到ouput文件 --关闭console台输出,可以节省时间 set term off; --再输出的文件中显示执行的sql语句 set echo on; --显示执行每条语句所用的时间 set timing on; --每行显示的100个字符 set linesize 100; --查询结果每一百条分一页 set pagesize 100; --spool 设置输出文件 spool d:\tempfile\oracle\output.txt;

Python中的输入和输出

输入 input() #!/usr/bin/env python #-*- coding:utf-8 -*- username=input('请输入用户名: ') input()内置函数,返回字符串类型.如果输入的内容要作为其他类型使用,必须进行转换,如要转换为int,就要 int(要转换的标识符). 输出 print() 格式化输出 username='admin' password='123456' print('用户名为 %s ,密码为 %s' %(username,password))

python简单的输入与输出

1 首先利用python完成简单的输出,运行如下: python和c语言类似,但又有所不同,python开发快,语言简洁,我是这样对比学的 输出:print+空格+'要输出的内容',一定要是英文状态下的'' #:coding:UTF-8name='lily'age=18height=168print '%s年龄是:%s身高是:%s' %(name,age,height) python不像C,python不需要句子结束后的分号 注意:#:coding:UTF-8,是允许中文输出的 不同的输出,数字