zoukankan      html  css  js  c++  java
  • [Dynamic Language] Python File Operator

    Python File Operator

    基本文件操作
    In [1]: f = open('test.txt')
    In [2]: f.read()
    Out[2]: 'abeen....2010-10-21 20:28:10.303459\nabeen....2010-10-21 23:17:51.120509\nabeen....2010-10-21 23:18:13.574263\n'
    In [8]: f.readline()
    Out[8]: 'abeen....2010-10-21 20:28:10.303459\n'

    //读取所有行,返回数组列表
    In [17]: l =f.readlines()
    In [18]: l
    Out[18]:
    ['abeen....2010-10-21 20:28:10.303459\n',
     'abeen....2010-10-21 23:17:51.120509\n',
     'abeen....2010-10-21 23:18:13.574263\n']

    //调整位置
    In [16]: f.seek(0)

    In [20]: f = open('test.txt', 'w')
    In [22]: f.write("this is a test")
    In [25]: f.close()
    In [26]: f = open('test.txt', 'r')
    In [27]: f.read()
    Out[27]: 'this is a test'
    In [28]: f.close()

    //追加内容
    In [30]: f = open('test.txt', 'a')
    In [31]: f.write("this is append'\n'")
    In [32]: f.close()
    In [33]: f = open('test.txt', 'r')
    In [34]: f.read()
    Out[34]: "this is a testthis is append'\n'"


    Python在读取一个文件时,会记住其在文件中的位置
    In [35]: f.seek(0)
    In [36]: f.read(3)
    Out[36]: 'thi'
    In [37]: f.tell()
    Out[37]: 3

    有时可能需要以二进制方式读写文件,比如图片和可执行文件。此时,只要在打开文件的方式参数中增加一个“b”即可
    In [40]: f = open('test.txt', 'wb')
    In [41]: f.write('asdfasdfasd')
    In [42]: f.close()
    In [46]: f = open('test.txt', 'rb')
    In [47]: f.read()
    Out[47]: 'asdfasdfasd'
    In [48]: f.close()

    使用“os.path”来获取基本信息
    In [1]: ls
    file_test.py  test.txt

    In [2]: fils_status = "test.txt"
    In [5]: import os
    In [6]: print  os.path.isdir(fils_status)
    False
    In [9]: print  os.path.isfile(fils_status)
    True
    In [10]: print  os.path.islink(fils_status)
    False
    In [11]: print  os.path.ismount(fils_status)
    False

    目录操作

    列出目录下内容
    In [15]: for filename in os.listdir('file'):
       ....:     print filename
    file_test.py
    test.txt

    创建目录
    In [17]: os.mkdir('abeen')
    In [18]: ls
    abeen/  file_test.py  test.txt
    删除目录
    In [19]: os.rmdir('abeen')
    In [20]: ls
    file_test.py  test.txt
    多级目录
    In [23]: os.makedirs('l/abeen/xiao/sb')
    In [24]: ls
    file_test.py  l/  test.txt

    In [36]: os.removedirs('l/abeen/xiao/sb')
    In [37]: ls
    file_test.py  test.txt

    对指定类型文件进行操作,用fnmatch
    In [33]: for file_name in os.listdir('./'):
       ....:     if fnmatch.fnmatch(file_name, '*.txt'):
       ....:         print file_name
    test.txt
    In [34]: l = ["aa", "aa.txt", "abeen.img", "shanshan.txt"]
    In [35]: l
    Out[35]: ['aa', 'aa.txt', 'abeen.img', 'shanshan.txt']
    In [36]: fnmatch.filter(l,'*.txt')
    Out[36]: ['aa.txt', 'shanshan.txt']
    In [37]: fnmatch.filter(l,'[a]*')
    Out[37]: ['aa', 'aa.txt', 'abeen.img']

    创建“虚拟”文件
    可以使用“StringIO”模块来创建文件并将其保存在内存中
    StringIO

    In [39]: import StringIO
    In [40]: f = StringIO.StringIO("this is a test")
    In [42]: f.read()
    Out[42]: 'this is a test'
    In [43]: dir(f)
    Out[43]:
    ['__doc__',
     '__init__',
     '__iter__',
     '__module__',
     'buf',
     'buflist',
     'close',
     'closed',
     'flush',
     'getvalue',
     'isatty',
     'len',
     'next',
     'pos',
     'read',
     'readline',
     'readlines',
     'seek',
     'softspace',
     'tell',
     'truncate',
     'write',
     'writelines']
    In [45]: f.close()

    cStringIO 应该比 StringIO速度快些吧
    In [1]: import cStringIO
    In [2]: f = cStringIO.StringIO("test by abeen \n test by abeen")
    In [3]: f.readline()
    Out[3]: 'test by abeen \n'
    In [4]: f.readline()
    Out[4]: ' test by abeen'
    In [5]: f.seek(0)
    In [6]: f.read()
    Out[6]: 'test by abeen \n test by abeen'
    In [7]: dir(f)
    Out[7]:
    ['__class__',
     '__delattr__',
     '__doc__',
     '__format__',
     '__getattribute__',
     '__hash__',
     '__init__',
     '__iter__',
     '__new__',
     '__reduce__',
     '__reduce_ex__',
     '__repr__',
     '__setattr__',
     '__sizeof__',
     '__str__',
     '__subclasshook__',
     'close',
     'closed',
     'flush',
     'getvalue',
     'isatty',
     'next',
     'read',
     'readline',
     'readlines',
     'reset',
     'seek',
     'tell',
     'truncate']
    In [8]: f.close()

  • 相关阅读:
    jQuery Easing 动画效果扩展
    【百度地图】标注点的动画效果
    CSS3制作404立体字体
    最长上升子序列的回溯 ZOJ 2432
    HDU 1423 最长上升公共子序列(LCIS)
    HDU 1114 完全背包问题的转化
    HDU 1085 多重背包转化为0-1背包问题
    opengl 对投影变化函数的理解
    HDU 1081 DP找最大和的矩阵
    HDU 1274 递归拼接字符串
  • 原文地址:https://www.cnblogs.com/abeen/p/1858739.html
Copyright © 2011-2022 走看看