设置字符串格式:

format % values

>>> x =1/81
>>> print(x)
0.012345679012345678
>>> print('value:%.2f' % x)
value:0.01

d #整数

o #八进制

x #小写16进制

X #大写16进制

e #小写科学计数法

E #大写科学计数法

f #浮点数

s #字符串

% #%字符

有多个填充时,以元组的方式指明 在字符串中包含%时必须使用%%

>>> a,b,c='cat',3.1415,6
>>> s = 'There\'s %d %ss older than %.2f years' % (c,a,b)
>>> s
"There's 6 cats older than 3.14 years"

 

格式字符串:

{}.format()  #将花括号中的内容转换成圆括号中的内容

可以通过命名替换

也可以按位置替换

还可加入转换说明符,要在{}中加:

>>> 'My {pets} has {prob}'.format(pets='dog',prob='fleas')
'My dog has fleas'
>>> 'My {0} has {1}'.format('dog','fleas')
'My dog has fleas'
>>> '1/81 = {x:.3f}'.format(x=1/81)
'1/81 = 0.012'

用大括号来指定格式设置参数,显示{或}时要用{{和}}

>>> 'num = {{{x:.{d}f}}}'.format(x = 1/81, d = 3)
'num = {0.012}'

r可以得到原始字符串

>>> print('c:\\python')
c:\python
>>> print(r'c:\python')
c:\python

 

文件和文件夹相关函数:

os.getcwd()  #返回当前工作目录的名称

os.listdir(p)  #返回一个字符串列表,其中包含路径p指定的文件夹中所有文件和文件夹的名称

os.chdir(p)  #将当前工作路径设为p

os.path.isfile(p) #如果p是文件返回True,否则返回False

os.path.isdir(p) #如果p是文件夹返回True,否则返回False

os.stat(fname) #返回有关fname的信息,如大小、最后一次修改时间

#list.py
import os
def list_cwd():
    return os.listdir(os.getcwd())

def files_cwd():
    return [p for p in list_cwd() if os.path.isfile(p)]

def folders_cwd():
    return [p for p in list_cwd() if os.path.isdir(p)]
>>> files_cwd()
['area.py', 'codesum.py', 'count10.py', 'donesum.py', 'extension.py', 'fact.py', 'funny.py', 'global.py', 'greetings.py', 'hello.py', 'list.py', 'name.py', 'numnote.py', 'password1.py', 'reference.py', 'sum.py', 'timestable.py', 'welcome.py', 'yesno.py']
>>> folders_cwd()
['__pycache__']

只获取.py结尾的文件

def list_py(path = None):
    if path == None:
        path = os.getcwd()
        return [fname for fname in os.listdir(path)
                if os.path.isfile(fname)
                if fname.endswith('.py')]
>>> list_py()
['area.py', 'codesum.py', 'count10.py', 'donesum.py', 'extension.py', 'fact.py', 'funny.py', 'global.py', 'greetings.py', 'hello.py', 'list.py', 'name.py', 'numnote.py', 'password1.py', 'reference.py', 'sum.py', 'timestable.py', 'welcome.py', 'yesno.py']

获取文件的大小总和:两种写法

def size_in_bytes(fname):
    return os.stat(fname).st_size

def cwd_size_in_bytes():
    total = 0
    for name in files_cwd():
        total = total + size_in_bytes(name)
    return total

def cwd_size_in_bytes2():
    return sum(size_in_bytes(f) for f in files_cwd())
>>> cwd_size_in_bytes()
3770
>>> cwd_size_in_bytes2()
3770

 

文本文件处理:

文件打开模式:

'r'   #读取 默认 

'w'  #写入

'a'   #文件末尾附加

'b'  #二进制

't'   #文本 默认

'+'  #读写

默认按行读取 包括最后面的\n

#printfile.py
def print_file1(fname):
    f = open(fname,'r')
    for line in f:
        print(line,end = '')
    f.close()
>>> print_file1('printfile.py')
#printfile.py
def print_file1(fname):
    f = open(fname,'r')
    for line in f:
        print(line,end = '')
    f.close()

将整个文本作为一个大字符串来读:

>>> print(open('printfile.py').read())
#printfile.py
def print_file1(fname):
    f = open(fname,'r')
    for line in f:
        print(line,end = '')
    f.close()

写入文本文件:

#write.py
import os
def make_story2():
    if os.path.isfile('story.txt'): #检查是否已存在文件
        print('story.txt already exists')
    else:
        f = open('story.txt', 'w')
        f.write('Mary had a litte lamb,\n')
        f.write('and then she had some more.')
>>> make_story2()
>>> make_story2()
story.txt already exists

在末尾添加

def add_to_story(line, fname ='story.txt'):
    f = open(fname, 'a')
    f.write(line)
>>> add_to_story('HaHaHa!!\n')

在文件开头添加,必须把文件重写 注意要用fseek(0)

def insert_title(title, fname = 'story.txt'):
    f = open(fname,'r+')
    temp = f.read()
    temp = title + '\n\n' + temp
    f.seek(0)  #让文件指向文件开头
    f.write(temp)
>>> insert_title("     Story    ")

最终story.txt的内容是

     Story    

Mary had a litte lamb,
and then she had some more.HaHaHa!!

 

用二进制方式打开文件:

判断文件是否为gif

def is_gif(fname):
    f = open(fname,'br')
    first4 = tuple(f.read(4))
    return first4 == (0x47,0x49,0x46,0x38)
>>> is_gif('1.gif')
True

 

pickle.dump #可用来存储数据

pickle.load #可用来获取数据

#picklefile.py
import pickle
def make_make_pickled_file():
    grades = {'a':[4,5,6],
              'b':[0,1,2],
              'c':[8,9,7]}
    outfile = open('grades.dat','wb')
    pickle.dump(grades,outfile)

def get_pickled_data():
    infile = open('grades.dat','rb')
    grades = pickle.load(infile)
    return grades
>>> make_make_pickled_file()
>>> a = get_pickled_data()
>>> a
{'a': [4, 5, 6], 'c': [8, 9, 7], 'b': [0, 1, 2]}

pickle可以存储函数,但不能读写特殊形式的二进制文件如GIF文件

shelve模块有存储和检索数据更高级的方法

sqlite3模块提供了访问SQLite数据库的接口

 

读取网页

>>> import urllib.request
>>> page = urllib.request.urlopen('http://python.org')
>>> html = page.read()
>>> html[:30]
b'<!doctype html>\n<!--[if lt IE '

下面的代码可以在默认浏览器中打开页面;

>>> import webbrowser
>>> webbrowser.open('http://www.baidu.com')
True