python标准库实例详解四 python标准库文件操作

发布时间:2020-01-20编辑:脚本学堂
本文是python标准库实例学习的第四节,通过实例掌握下python标准库文件操作的方法,有需要的朋友参考下。

例子,pythonbiaozhunku/ target=_blank class=infotextkey>python标准库文件操作。
 

复制代码 代码示例:
>>> os.environ["HOME"]
'C:UsersAdministrator'
 
>>> os.getcwd() #获得当前的目录
'D:new'
>>> os.getenv("QTDIR")  #获取环境变量的值
'D:vs2010-qt-src-4.7.4qt-src-4.7.4'
os.putenv(varname, value)  #设置环境变量的值
 
os.mkdir(path[, mode])
>>> os.mkdir("aa")
>>> os.rmdir("aa")
>>>os.makedirs("aabbcc") 多级目录
os.removedirs(path)?
os.remove("d:newhello.txt")  #删除文件,如果是目录的话,出错
os.rename("test.txt","a.txt") 
 
random.randint(a, b)
Return a random integer N such that a <= N <= b.
random.choice(seq)
Return a random element from the non-empty sequence seq. If seq is empty, raises IndexError.
random.random()
Return the next random floating point number in the range [0.0, 1.0).
random.shuffle(x[, random])  随机排序序列
random.uniform(a, b)?返回a<=N<=b之间的浮点数
random.randrange([start], stop[, step])想当于choice(range(start, stop, step))
>>> random.random()        # Random float x, 0.0 <= x < 1.0
0.37444887175646646
>>> random.uniform(1, 10)  # Random float x, 1.0 <= x < 10.0
1.1800146073117523
>>> random.randint(1, 10)  # Integer from 1 to 10, endpoints included
7
>>> random.randrange(0, 101, 2)  # Even integer from 0 to 100
26
>>> random.choice('abcdefghij')  # Choose a random element
'c'
 
>>> items = [1, 2, 3, 4, 5, 6, 7]
>>> random.shuffle(items)
>>> items
[7, 3, 2, 5, 6, 4, 1]
 
>>> random.sample([1, 2, 3, 4, 5],  3)  # Choose 3 elements
[4, 1, 5]
 
>>> datetime.MAXYEAR
9999
>>> datetime.MINYEAR
1
 
>>> a=datetime.date(2011,2,1)
>>> a.today()
datetime.date(2011, 11, 26)
>>> a.year
2011
>>> a.month
2
>>> a.day
1
 
>>> import time
>>> from datetime import date
>>> today = date.today()
>>> today
datetime.date(2007, 12, 5)
>>> my_birthday = date(today.year, 6, 24)
>>> if my_birthday < today:
...     my_birthday = my_birthday.replace(year=today.year + 1)
>>> my_birthday
datetime.date(2008, 6, 24)
>>> time_to_birthday = abs(my_birthday - today)  #计算日期之差
>>> time_to_birthday.days
202
 
>>> datetime.now()   #当前时间
datetime.datetime(2011, 11, 26, 10, 40, 10, 283000)
>>> datetime.utcnow()
datetime.datetime(2011, 11, 26, 2, 40, 34, 809000)
>>> a=date(2005,7,14)  #日期和时间进行合并
>>> t=time(12,30,12)
>>> datetime.combine(a,t)
datetime.datetime(2005, 7, 14, 12, 30, 12)
>>> dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
>>> dt
datetime.datetime(2006, 11, 21, 16, 30)
 
>>> from datetime import timedelta, datetime, tzinfo
>>> class GMT1(tzinfo):
...     def __init__(self):         # DST starts last Sunday in March
...         d = datetime(dt.year, 4, 1)   # ends last Sunday in October
...         self.dston = d - timedelta(days=d.weekday() + 1)
...         d = datetime(dt.year, 11, 1)
...         self.dstoff = d - timedelta(days=d.weekday() + 1)
...     def utcoffset(self, dt):
...         return timedelta(hours=1) + self.dst(dt)
...     def dst(self, dt):
...         if self.dston <=  dt.replace(tzinfo=None) < self.dstoff:
...             return timedelta(hours=1)
...         else:
...             return timedelta(0)
...     def tzname(self,dt):
...          return "GMT +1"
...
>>> class GMT2(tzinfo):
...     def __init__(self):
...         d = datetime(dt.year, 4, 1)
...         self.dston = d - timedelta(days=d.weekday() + 1)
...         d = datetime(dt.year, 11, 1)
...         self.dstoff = d - timedelta(days=d.weekday() + 1)
...     def utcoffset(self, dt):
...         return timedelta(hours=1) + self.dst(dt)
...     def dst(self, dt):
...         if self.dston <=  dt.replace(tzinfo=None) < self.dstoff:
...             return timedelta(hours=2)
...         else:
...             return timedelta(0)
...     def tzname(self,dt):
...         return "GMT +2"
...
>>> gmt1 = GMT1()
>>> # Daylight Saving Time
>>> dt1 = datetime(2006, 11, 21, 16, 30, tzinfo=gmt1)
>>> dt1.dst()
datetime.timedelta(0)
>>> dt1.utcoffset()
datetime.timedelta(0, 3600)
>>> dt2 = datetime(2006, 6, 14, 13, 0, tzinfo=gmt1)
>>> dt2.dst()
datetime.timedelta(0, 3600)
>>> dt2.utcoffset()
datetime.timedelta(0, 7200)
>>> # Convert datetime to another time zone
>>> dt3 = dt2.astimezone(GMT2())
>>> dt3     # doctest: +ELLIPSIS
datetime.datetime(2006, 6, 14, 14, 0, tzinfo=<GMT2 object at 0x...>)
>>> dt2     # doctest: +ELLIPSIS
datetime.datetime(2006, 6, 14, 13, 0, tzinfo=<GMT1 object at 0x...>)
>>> dt2.utctimetuple() == dt3.utctimetuple()
True
 
class datetime.time(hour[, minute[, second[, microsecond[, tzinfo]]]])
>>> a=time(10,46,12)
>>> a.min
datetime.time(0, 0)
>>> a.max
datetime.time(23, 59, 59, 999999)
>>> a.hour
10
>>> a.minute
46
>>> a.second
12
>>> a.microsecond
0
 
class collections.Counter([iterable-or-mapping])
A Counter is a dict subclass for counting hashable objects.
>>> # Tally occurrences of words in a list
>>> cnt = Counter()
>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
...     cnt[word] += 1
>>> cnt
Counter({'blue': 3, 'red': 2, 'green': 1})
 
>>> # Find the ten most common words in Hamlet
>>> import re
>>> words = re.findall('w+', open('hamlet.txt').read().lower())
>>> Counter(words).most_common(10)
[('the', 1143), ('and', 966), ('to', 762), ('of', 669), ('i', 631),
 ('you', 554),  ('a', 546), ('my', 514), ('hamlet', 471), ('in', 451)]
 
>>> c = Counter(['eggs', 'ham'])
>>> c['bacon']                              # count of a missing element is zero
0
>>> c['sausage'] = 0                        # counter entry with a zero count
>>> del c['sausage']                        # del actually removes the entry
 
>>> c = Counter(a=4, b=2, c=0, d=-2)
>>> list(c.elements())
['a', 'a', 'a', 'a', 'b', 'b']
 
most_common([n])  #出现次数最多的n个
>>> Counter('abracadabra').most_common(3)
[('a', 5), ('r', 2), ('b', 2)]
 
>>> c = Counter(a=4, b=2, c=0, d=-2)
>>> d = Counter(a=1, b=2, c=3, d=4)
>>> c.subtract(d)
Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
 
>>> c = Counter(a=4, b=2, c=0, d=-2)
>>> sum(c.values())  # total of all counts
4
>>> list(c)
['a', 'c', 'b', 'd']
>>> set(c)
set(['a', 'c', 'b', 'd'])
>>> dict(c)
{'a': 4, 'c': 0, 'b': 2, 'd': -2}
>>> c.items()
[('a', 4), ('c', 0), ('b', 2), ('d', -2)]
>>> c.most_common()[:-2:-1]    # c.most_common()[:-n:-1] n least #common elements
 
[('d', -2)]
>>> c+=Counter()
>>> c
Counter({'a': 4, 'b': 2})
>>> c.clear()
>>> c
Counter()
 
>>> c = Counter(a=3, b=1)
>>> d = Counter(a=1, b=2)
>>> c + d                       # add two counters together:  c[x] + d[x]
Counter({'a': 4, 'b': 3})
>>> c - d                       # subtract (keeping only positive counts)
Counter({'a': 2})
>>> c & d                       # intersection:  min(c[x], d[x])
Counter({'a': 1, 'b': 1})
>>> c | d                       # union:  max(c[x], d[x])
Counter({'a': 3, 'b': 2})
 
>>> from collections import deque
>>> d = deque('ghi')                 # make a new deque with three items
>>> for elem in d:                   # iterate over the deque's elements
...     print elem.upper()
G
H
I
 
>>> d.append('j')                    # add a new entry to the right side
>>> d.appendleft('f')                # add a new entry to the left side
>>> d                                # show the representation of the deque
deque(['f', 'g', 'h', 'i', 'j'])
 
>>> d.pop()                          # return and remove the rightmost item
'j'
>>> d.popleft()                      # return and remove the leftmost item
'f'
>>> list(d)                          # list the contents of the deque
['g', 'h', 'i']
>>> d[0]                             # peek at leftmost item
'g'
>>> d[-1]                            # peek at rightmost item
'i'
 
>>> list(reversed(d))                # list the contents of a deque in reverse
['i', 'h', 'g']
>>> 'h' in d                         # search the deque
True
>>> d.extend('jkl')                  # add multiple elements at once
>>> d
deque(['g', 'h', 'i', 'j', 'k', 'l'])
>>> d.rotate(1)                      # right rotation
>>> d
deque(['l', 'g', 'h', 'i', 'j', 'k'])
>>> d.rotate(-1)                     # left rotation
>>> d
deque(['g', 'h', 'i', 'j', 'k', 'l'])
 
>>> deque(reversed(d))               # make a new deque in reverse order
deque(['l', 'k', 'j', 'i', 'h', 'g'])
>>> d.clear()                        # empty the deque
>>> d.pop()                          # cannot pop from an empty deque
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in -toplevel-
    d.pop()
IndexError: pop from an empty deque
 
>>> d.extendleft('abc')              # extendleft() reverses the input order
>>> d
deque(['c', 'b', 'a'])
 
def tail(filename, n=10):
    'Return the last n lines of a file'
    return deque(open(filename), n)
 
def moving_average(iterable, n=3):
    # moving_average([40, 30, 50, 46, 39, 44]) --> 40.0 42.0 45.0 43.0
    # http://en.wikipedia.org/wiki/Moving_average
    it = iter(iterable)
    d = deque(itertools.islice(it, n-1))
    d.appendleft(0)
    s = sum(d)
    for elem in it:
        s += elem - d.popleft()
        d.append(elem)
        yield s / float(n)
 
def delete_nth(d, n):
    d.rotate(-n)
    d.popleft()
    d.rotate(n)
 
class collections.defaultdict([default_factory[, ...]])
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
...     d[k].append(v)
...
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
 
>>> d = {}
>>> for k, v in s:
...     d.setdefault(k, []).append(v)
...
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
 
>>> s = 'mississippi'
>>> d = defaultdict(int)
>>> for k in s:
...     d[k] += 1
...
>>> d.items()
[('i', 4), ('p', 2), ('s', 4), ('m', 1)]
 
>>> s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
>>> d = defaultdict(set)
>>> for k, v in s:
...     d[k].add(v)
...
>>> d.items()
[('blue', set([2, 4])), ('red', set([1, 3]))]
 
>>> def heapsort(iterable):
...     'Equivalent to sorted(iterable)'
...     h = []
...     for value in iterable:
...         heappush(h, value)
...     return [heappop(h) for i in range(len(h))]
...
>>> heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
>>> h = []
>>> heappush(h, (5, 'write code'))
>>> heappush(h, (7, 'release product'))
>>> heappush(h, (1, 'write spec'))
>>> heappush(h, (3, 'create tests'))
>>> heappop(h)
(1, 'write spec')
 
#coding=utf-8
#堆的实例
 
from heapq import heappush, heappop, heappushpop, heapify, heapreplace, nlargest,
    nsmallest
 
heap=[]
 
heappush(heap,"A");
heappush(heap,"C");
heappush(heap,"B");
 
print heap
 
heappop(heap)   #弹出堆中最小的元素
print heap
 
var=heappushpop(heap,"D")  #返回并弹出堆中最小的元素,并且将D压入堆
print var
print heap
 
var=heapreplace(heap,"E")  #返回并弹出堆中最小的元素,并且将D压入堆,
print var
print heap
 
list=[1,2,3,4,5,6,7,8,9,0]
heapify(list);
print list
 
print nlargest(3,list)   #返回堆中最大的3个
print nsmallest(3,list)  #返回堆中最小的3个