1. 程式人生 > >Python—操作系統和多線程

Python—操作系統和多線程

listdir python ESS 判斷 rem 生成 打印機 top 元素

####python的操作系統###

1.os模塊

import os

#1.返回操作系統類型

# 值為posix,是linux操作系統

#值為nt,是windows系統

print os.name

#2.返回操作系統的詳細

print os.uname()

#3.系統的環境變量

print os.environ

print os.environ.get(‘PATH‘)

#4.判斷是否是絕對路徑(但是不會判斷文件或者目錄是否存在)

print os.path.isabs(‘/etc/passwd‘)

print os.path.isabs(‘hello‘)

#5.生成絕對路徑

print os.path.abspath(‘hello.png‘) #當前路徑下的文件

print os.path.join(‘/home/kiosk‘,‘hello.png‘) #指定絕對路徑

print os.path.join(os.path.abspath(‘.‘),‘hello.png‘)

#6.獲取目錄名或者文件名

filename = ‘/home/kiosk/Desktop/hello.png‘

print os.path.basename(filename)

print os.path.dirname(filename)

#7.創建目錄/刪除目錄

os.mkdir(‘wf‘)

os.makedirs(‘wf/westos‘) #相當於 mkdir -p

os.rmdir(‘wf‘)

#8.創建文件/刪除文件

os.mknod(‘wf.txt‘)

os.remove(‘wf.txt‘)

#9.文件的重命名(如果重命名文件不存在,會報錯)

os.rename(‘wf.txt‘,‘westos.txt‘)

#10.判斷文件或者目錄是否存在

print os.path.exists(‘img‘)

print os.path.exists(‘data.txt‘)

#11.分離後綴名和文件名

print os.path.splitext(‘hello.png‘)

#12.將目錄名和文件名分離

print os.path.split(‘/home/kiosk/Desktop/hello.png‘)

2.練習

需求:

1).在當前目錄新建目錄img,裏面包含多個文件,文件名各不相同(X4G5.png)

2).將當前img目錄所有以.png結尾的後綴名改為.jpg

import random

import string

import os

# def create(dir):

# a = string.ascii_letters + string.digits

# b = random.choice(a)

# c = b + ‘.png‘

# print os.makedirs(dir/c)

#

# create(‘wf‘)

def gen_code(len=4):

#隨機生成4位文件名

li = random.sample(string.ascii_letters + string.digits,len)

#將列表元素拼接成字符串

return ‘‘.join(li)

def create_file():

#隨機生成多個文件名

li = {gen_code() for i in range(100)}

os.mkdir(‘img‘)

for i in li:

os.mknod(‘img/‘+i+‘.png‘)

# create_file()

def modify_suffix(dirname,old_suffix,new_suffix):

"""

:param dirname: 所要操作的目錄

:param old_suffix: 之前的文件後綴

:param new_suffix: 新的文件後綴

:return:

"""

#1.判斷查找的目錄是否存在,如果不存在,顯示報錯

if os.path.exists(dirname):

#2.找出所有以old_suffix(.png)結尾的文件

pngfiles = [i for i in os.listdir(dirname)

if i.endswith(old_suffix)]

#3.將文件名和後綴名分開,留下文件名

####python的多線程###

1.什麽是單線程?

單線程是指:在程序執行時,所走的程序路徑按照連續的順序排下來,前面的必須處理好,後面的才會執行。

2.什麽是多線程?

說起多線程,那麽就不得不說什麽是線程,而說起線程,就要說什麽是進程。

進程(Process):

是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統機構的基礎。進程可以簡單的理解為:是一個可以獨立運行的程序單位。它是線程的集合,進程就是由一個或多個線程構成的,每一個線程都是進程中的一條執行路徑。每個應用程序都有一個自己的進程。

每個進程啟動時都會最先產生一個線程,即主線程。然後主線程會創建其他子線程。

多線程:

就可以理解成進程中同時有多個執行的路徑(線程)正在執行

兩者的區別:

1)線程必須在某個進程中執行

2)多線程可以共享同個地址空間,打開的文件以及其它資源

3)多線程共享物理內存,磁盤,打印機以及其他資源

3.建立多線程

將這些代碼,分給了三個線程

"""

import threading

from time import ctime,sleep

def music(a):

for i in range(2):

print ‘我在聽%s。%s‘%(a,ctime())

sleep(1)

def movie(b):

for i in range(2):

print ‘我在看%s。%s‘%(b,ctime())

sleep(5)

#創建threads列表

threads = []

t1 = threading.Thread(target=music,args=(‘李鐘碩‘,))

threads.append(t1)

t2 = threading.Thread(target=movie,args=(‘李鐘碩的電影‘,))

threads.append(t2)

for i in threads:

i.start()

print ‘all over %s‘%ctime()

4.線程和函數的關系的建立

from threading import Thread

def foo(arg):

print arg

print ‘before‘

#讓線程和函數建立關系

t1 = Thread(target=foo,args=(1,))

t1.start()

print t1.getName()

t2 = Thread(target=foo,args=(2,))

t2.start()

print t2.getName()

print ‘after‘

Python—操作系統和多線程