成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

pipe函數(shù)python,pipe函數(shù)的功能

python多進(jìn)程pipe在windows中能用嗎

Python提供了非常好用的多進(jìn)程包multiprocessing,你只需要定義一個(gè)函數(shù),Python會(huì)替你完成其他所有事情。借助這個(gè)包,可以輕松完成從單進(jìn)程到并發(fā)執(zhí)行的轉(zhuǎn)換。

創(chuàng)新互聯(lián)公司是專業(yè)的石獅網(wǎng)站建設(shè)公司,石獅接單;提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行石獅網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

1、新建單一進(jìn)程

如果我們新建少量進(jìn)程,可以如下:

import multiprocessing

import time

def func(msg):

for i in xrange(3):

print msg

time.sleep(1)

if __name__ == "__main__":

p = multiprocessing.Process(target=func, args=("hello", ))

p.start()

p.join()

print "Sub-process done."12345678910111213

python 多進(jìn)程

基于官方文檔:

日樂購(gòu),剛才看到的一個(gè)博客,寫的都不太對(duì),還是基于官方的比較穩(wěn)妥

我就是喜歡抄官方的,哈哈

通常我們使用Process實(shí)例化一個(gè)進(jìn)程,并調(diào)用 他的 start() 方法啟動(dòng)它。

這種方法和 Thread 是一樣的。

上圖中,我寫了 p.join() 所以主進(jìn)程是 等待 子進(jìn)程執(zhí)行完后,才執(zhí)行 print("運(yùn)行結(jié)束")

否則就是反過來了(這個(gè)不一定,看你的語(yǔ)句了,順序其實(shí)是隨機(jī)的)例如:

主進(jìn)加個(gè) sleep

所以不加join() ,其實(shí)子進(jìn)程和主進(jìn)程是各干各的,誰(shuí)也不等誰(shuí)。都執(zhí)行完后,文件運(yùn)行就結(jié)束了

上面我們用了 os.getpid() 和 os.getppid() 獲取 當(dāng)前進(jìn)程,和父進(jìn)程的id

下面就講一下,這兩個(gè)函數(shù)的用法:

os.getpid()

返回當(dāng)前進(jìn)程的id

os.getppid()

返回父進(jìn)程的id。 父進(jìn)程退出后,unix 返回初始化進(jìn)程(1)中的一個(gè)

windows返回相同的id (可能被其他進(jìn)程使用了)

這也就解釋了,為啥我上面 的程序運(yùn)行多次, 第一次打印的parentid 都是 14212 了。

而子進(jìn)程的父級(jí) process id 是調(diào)用他的那個(gè)進(jìn)程的 id : 1940

視頻筆記:

多進(jìn)程:使用大致方法:

參考: 進(jìn)程通信(pipe和queue)

pool.map (函數(shù)可以有return 也可以共享內(nèi)存或queue) 結(jié)果直接是個(gè)列表

poll.apply_async() (同map,只不過是一個(gè)進(jìn)程,返回結(jié)果用 xx.get() 獲得)

報(bào)錯(cuò):

參考 :

把 pool = Pool() 放到 if name == " main ": 下面初始化搞定。

結(jié)果:

這個(gè)肯定有解釋的

測(cè)試多進(jìn)程計(jì)算效果:

進(jìn)程池運(yùn)行:

結(jié)果:

普通計(jì)算:

我們同樣傳入 1 2 10 三個(gè)參數(shù)測(cè)試:

其實(shí)對(duì)比下來開始快了一半的;

我們把循環(huán)里的數(shù)字去掉一個(gè) 0;

單進(jìn)程:

多進(jìn)程:

兩次測(cè)試 單進(jìn)程/進(jìn)程池 分別為 0.669 和 0.772 幾乎成正比的。

問題 二:

視圖:

post 視圖里面

Music 類:

直接報(bào)錯(cuò):

寫在 類里面也 在函數(shù)里用 self.pool 調(diào)用也不行,也是相同的錯(cuò)誤。

最后 把 pool = Pool 直接寫在 search 函數(shù)里面,奇跡出現(xiàn)了:

前臺(tái)也能顯示搜索的音樂結(jié)果了

總結(jié)一點(diǎn),進(jìn)程這個(gè)東西,最好 寫在 直接運(yùn)行的函數(shù)里面,而不是 一個(gè)函數(shù)跳來跳去。因?yàn)樽詈罂赡?是在子進(jìn)程的子進(jìn)程運(yùn)行的,這是不許的,會(huì)報(bào)錯(cuò)。

還有一點(diǎn),多進(jìn)程運(yùn)行的函數(shù)對(duì)象,不能是 lambda 函數(shù)。也許lambda 虛擬,在內(nèi)存??

使用 pool.map 子進(jìn)程 函數(shù)報(bào)錯(cuò),導(dǎo)致整個(gè) pool 掛了:

參考:

主要你要,對(duì)函數(shù)內(nèi)部捕獲錯(cuò)誤,而不能讓異常拋出就可以了。

關(guān)于map 傳多個(gè)函數(shù)參數(shù)

我一開始,就是正常思維,多個(gè)參數(shù),搞個(gè)元祖,讓參數(shù)一一對(duì)應(yīng)不就行了:

報(bào)錯(cuò):

參考:

普通的 process 當(dāng)讓可以穿多個(gè)參數(shù),map 卻不知道咋傳的。

apply_async 和map 一樣,不知道咋傳的。

最簡(jiǎn)單的方法:

使用 starmap 而不是 map

結(jié)果:

子進(jìn)程結(jié)束

1.8399453163146973

成功拿到結(jié)果了

關(guān)于map 和 starmap 不同的地方看源碼:

關(guān)于apply_async() ,我沒找到多參數(shù)的方法,大不了用 一個(gè)迭代的 starmap 實(shí)現(xiàn)。哈哈

關(guān)于 上面源碼里面有 itertools.starmap

itertools 用法參考:

有個(gè)問題,多進(jìn)程最好不要使用全部的 cpu , 因?yàn)檫@樣可能影響其他任務(wù),所以 在進(jìn)程池 添加 process 參數(shù) 指定,cpu 個(gè)數(shù):

上面就是預(yù)留了 一個(gè)cpu 干其他事的

后面直接使用 Queue 遇到這個(gè)問題:

解決:

Manager().Queue() 代替 Queue()

因?yàn)?queue.get() 是堵塞型的,所以可以提前判斷是不是 空的,以免堵塞進(jìn)程。比如下面這樣:

使用 queue.empty() 空為True

python多進(jìn)程,多線程分別是并行還是并發(fā)

并發(fā)和并行

你吃飯吃到一半,電話來了,你一直到吃完了以后才去接,這就說明你不支持并發(fā)也不支持并行。

你吃飯吃到一半,電話來了,你停了下來接了電話,接完后繼續(xù)吃飯,這說明你支持并發(fā)。

你吃飯吃到一半,電話來了,你一邊打電話一邊吃飯,這說明你支持并行。

并發(fā)的關(guān)鍵是你有處理多個(gè)任務(wù)的能力,不一定要同時(shí)。

并行的關(guān)鍵是你有同時(shí)處理多個(gè)任務(wù)的能力。

所以我認(rèn)為它們最關(guān)鍵的點(diǎn)就是:是否是『同時(shí)』。

Python 中沒有真正的并行,只有并發(fā)

無論你的機(jī)器有多少個(gè)CPU, 同一時(shí)間只有一個(gè)Python解析器執(zhí)行。這也和大部分解釋型語(yǔ)言一致, 都不支持并行。這應(yīng)該是python設(shè)計(jì)的先天缺陷。

javascript也是相同的道理, javascript早起的版本只支持單任務(wù),后來通過worker來支持并發(fā)。

Python中的多線程

先復(fù)習(xí)一下進(jìn)程和線程的概念

所謂進(jìn)程,簡(jiǎn)單的說就是一段程序的動(dòng)態(tài)執(zhí)行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)基本單位。一個(gè)進(jìn)程中又可以包含若干個(gè)獨(dú)立的執(zhí)行流,我們將這些執(zhí)行流稱為線程,線程是CPU調(diào)度和分配的基本單位。同一個(gè)進(jìn)程的線程都有自己的專有寄存器,但內(nèi)存等資源是共享的。

這里有一個(gè)更加形象的解釋, 出自阮一峰大神的杰作:

Python中的thread的使用

通過 thread.start_new_thread 方法

import thread

import time

# Define a function for the thread

def print_time( threadName, delay):

count = 0

while count 5:

time.sleep(delay)

count += 1

print "%s: %s" % ( threadName, time.ctime(time.time()) )

# Create two threads as follows

try:

thread.start_new_thread( print_time, ("Thread-1", 2, ) )

thread.start_new_thread( print_time, ("Thread-2", 4, ) )

except:

print "Error: unable to start thread"

while 1:

pass

通過繼承thread

#!/usr/bin/python

import threading

import time

exitFlag = 0

class myThread (threading.Thread):

def __init__(self, threadID, name, counter):

threading.Thread.__init__(self)

self.threadID = threadID

self.name = name

self.counter = counter

def run(self):

print "Starting " + self.name

print_time(self.name, self.counter, 5)

print "Exiting " + self.name

def print_time(threadName, delay, counter):

while counter:

if exitFlag:

threadName.exit()

time.sleep(delay)

print "%s: %s" % (threadName, time.ctime(time.time()))

counter -= 1

# Create new threads

thread1 = myThread(1, "Thread-1", 1)

thread2 = myThread(2, "Thread-2", 2)

# Start new Threads

thread1.start()

thread2.start()

print "Exiting Main Thread"

線程的同步

#!/usr/bin/python

import threading

import time

class myThread (threading.Thread):

def __init__(self, threadID, name, counter):

threading.Thread.__init__(self)

self.threadID = threadID

self.name = name

self.counter = counter

def run(self):

print "Starting " + self.name

# Get lock to synchronize threads

threadLock.acquire()

print_time(self.name, self.counter, 3)

# Free lock to release next thread

threadLock.release()

def print_time(threadName, delay, counter):

while counter:

time.sleep(delay)

print "%s: %s" % (threadName, time.ctime(time.time()))

counter -= 1

threadLock = threading.Lock()

threads = []

# Create new threads

thread1 = myThread(1, "Thread-1", 1)

thread2 = myThread(2, "Thread-2", 2)

# Start new Threads

thread1.start()

thread2.start()

# Add threads to thread list

threads.append(thread1)

threads.append(thread2)

# Wait for all threads to complete

for t in threads:

t.join()

print "Exiting Main Thread"

利用multiprocessing多進(jìn)程實(shí)現(xiàn)并行

進(jìn)程的創(chuàng)建

Python 中有一套類似多線程API 的的類來進(jìn)行多進(jìn)程開發(fā): multiprocessing

這里是一個(gè)來自官方文檔的例子:

from multiprocessing import Process

def f(name):

print 'hello', name

if __name__ == '__main__':

p = Process(target=f, args=('bob',))

p.start()

p.join()

類似與線程,一可以通過繼承process類來實(shí)現(xiàn):

from multiprocessing import Process

class Worker(Process):

def run(self):

print("in" + self.name)

if __name__ == '__main__':

jobs = []

for i in range(5):

p = Worker()

jobs.append(p)

p.start()

for j in jobs:

j.join()

進(jìn)程的通信

Pipe()

pipe()函數(shù)返回一對(duì)由雙向通信的管道連接的對(duì)象,這兩個(gè)對(duì)象通過send, recv 方法實(shí)現(xiàn) 信息的傳遞

from multiprocessing import Process, Pipe

def f(conn):

conn.send([42, None, 'hello'])

conn.close()

if __name__ == '__main__':

parent_conn, child_conn = Pipe()

p = Process(target=f, args=(child_conn,))

p.start()

print parent_conn.recv() # prints "[42, None, 'hello']"

p.join()

Quene

from multiprocessing import Process, Queue

def f(q):

q.put([42, None, 'hello'])

if __name__ == '__main__':

q = Queue()

p = Process(target=f, args=(q,))

p.start()

print q.get() # prints "[42, None, 'hello']"

p.join()

進(jìn)程間的同步

Python 中多進(jìn)程中也有類似線程鎖的概念,使用方式幾乎一樣:

from multiprocessing import Process, Lock

def f(l, i):

l.acquire()

print 'hello world', i

l.release()

if __name__ == '__main__':

lock = Lock()

for num in range(10):

Process(target=f, args=(lock, num)).start()

進(jìn)程間的共享內(nèi)存

每個(gè)進(jìn)程都有獨(dú)自的內(nèi)存,是不能相互訪問的, 也行 python官方覺得通過進(jìn)程通信的方式過于麻煩,提出了共享內(nèi)存的概念,以下是官方給出的例子:

from multiprocessing import Process, Value, Array

def f(n, a):

n.value = 3.1415927

for i in range(len(a)):

a[i] = -a[i]

if __name__ == '__main__':

num = Value('d', 0.0)

arr = Array('i', range(10))

p = Process(target=f, args=(num, arr))

p.start()

p.join()

print num.value

print arr[:]

總結(jié)

python通過多進(jìn)程實(shí)現(xiàn)多并行,充分利用多處理器,彌補(bǔ)了語(yǔ)言層面不支持多并行的缺點(diǎn)。Python, Node.js等解釋型語(yǔ)言似乎都是通過這種方式來解決同一個(gè)時(shí)間,一個(gè)解釋器只能處理一段程序的問題, 十分巧妙。

python stdin 為pipe什么意思

Linux中進(jìn)程的通信方式有信號(hào),管道,共享內(nèi)存,消息隊(duì)列socket等。其中管道是*nix系統(tǒng)進(jìn)程間通信的最古老形式,所有*nix都提供這種通信方式。管道是一種半雙工的通信機(jī)制,也就是說,它只能一端用來讀,另外一端用來寫;另外,管道只能用來在具有公共祖先的兩個(gè)進(jìn)程之間通信。管道通信遵循先進(jìn)先出的原理,并且數(shù)據(jù)只能被讀取一次,當(dāng)此段數(shù)據(jù)被讀取后,馬上會(huì)從數(shù)據(jù)中消失,這一點(diǎn)很重要。

Linux上,創(chuàng)建管道使用pipe函數(shù),當(dāng)它執(zhí)行后,會(huì)產(chǎn)生兩個(gè)文件描述符,分別為讀端和寫端。單個(gè)進(jìn)程中的管道幾乎沒有任何作用,通常會(huì)先調(diào)用pipe,然后調(diào)用fork,從而創(chuàng)建從父進(jìn)程到子進(jìn)程的IPC通道。

Linux中,我們經(jīng)常會(huì)使用到管道,例如用cat命令查看一個(gè)大文件時(shí),一頁(yè)不能全部顯示,我們可以通過cat xxx | more來分頁(yè)顯示,又比如搜索文件里的內(nèi)容可以用 cat xxx | grep search來進(jìn)行,這里我們都用到了管道。接下來我會(huì)用python編寫一段自動(dòng)分頁(yè)顯示的程序,而不用手動(dòng)來使用管道。

#!/usr/bin/env python

import os,sys

if not sys.argv[1:]:

print "No filename input"

sys.exit(1)

try:

fp = open(sys.argv[1],"r")

except IOError,msg:

sys.exit(msg)

pi=os.pipe()

pid=os.fork()

if pid:

#parent

os.close(pi[0]) #close read pipe

#write to pipe

line=fp.readline()

while line:

os.write(pi[1],line)

line=fp.readline()

#close write pipe

os.close(pi[1])

#wait for chile

os.waitpid(pid,0)

else:

os.close(pi[1]) #close write pipe

#put pipe read to stdin

os.dup2(pi[0],sys.stdin.fileno())

os.close(pi[0])

os.execl("/bin/more","more")

把這段代碼存為scat.py,增加執(zhí)行權(quán)限之后,運(yùn)行 scat.py 文件名,系統(tǒng)就會(huì)自動(dòng)讀取文件的內(nèi)容并分頁(yè),與使用 cat 文件名 | more 的效果是一模一樣的。在上面的代碼中,用到了前幾篇博客中說的fork,dup2和exec系列函數(shù)。

python 基礎(chǔ)教程

運(yùn)算

a = 21

b = 10

c = 0

c = a + b

print "1 - c 的值為:", c

c = a - b

print "2 - c 的值為:", c

c = a * b

print "3 - c 的值為:", c

c = a / b

print "4 - c 的值為:", c

c = a % b

print "5 - c 的值為:", c

a = 2

b = 3

c = a**b

print "6 - c 的值為:", c

a = 10

b = 5

c = a//b

print "7 - c 的值為:", c

python比較

a = 21

b = 10

c = 0

if ( a == b ):

print "1 - a 等于 b"

else:

print "1 - a 不等于 b"

if ( a != b ):

print "2 - a 不等于 b"

else:

print "2 - a 等于 b"

if ( a b ):

print "3 - a 不等于 b"

else:

print "3 - a 等于 b"

if ( a b ):

print "4 - a 小于 b"

else:

print "4 - a 大于等于 b"

if ( a b ):

print "5 - a 大于 b"

else:

print "5 - a 小于等于 b"

a = 5

b = 20

if ( a = b ):

print "6 - a 小于等于 b"

else:

print "6 - a 大于 b"

if ( b = a ):

print "7 - b 大于等于 a"

else:

print "7 - b 小于 a"

賦值

a = 21

b = 10

c = 0

c = a + b

print "1 - c 的值為:", c

c += a

print "2 - c 的值為:", c

c *= a

print "3 - c 的值為:", c

c /= a

print "4 - c 的值為:", c

c = 2

c %= a

print "5 - c 的值為:", c

c **= a

print "6 - c 的值為:", c

c //= a

print "7 - c 的值為:", c

邏輯運(yùn)算符:

a = 10

b = 20

if ( a and b ):

print "1 - 變量 a 和 b 都為 true"

else:

print "1 - 變量 a 和 b 有一個(gè)不為 true"

if ( a or b ):

print "2 - 變量 a 和 b 都為 true,或其中一個(gè)變量為 true"

else:

print "2 - 變量 a 和 b 都不為 true"

a = 0

if ( a and b ):

print "3 - 變量 a 和 b 都為 true"

else:

print "3 - 變量 a 和 b 有一個(gè)不為 true"

if ( a or b ):

print "4 - 變量 a 和 b 都為 true,或其中一個(gè)變量為 true"

else:

print "4 - 變量 a 和 b 都不為 true"

if not( a and b ):

print "5 - 變量 a 和 b 都為 false,或其中一個(gè)變量為 false"

else:

print "5 - 變量 a 和 b 都為 true"

in,not in

a = 10

b = 20

list = [1, 2, 3, 4, 5 ];

if ( a in list ):

print "1 - 變量 a 在給定的列表中 list 中"

else:

print "1 - 變量 a 不在給定的列表中 list 中"

if ( b not in list ):

print "2 - 變量 b 不在給定的列表中 list 中"

else:

print "2 - 變量 b 在給定的列表中 list 中"

a = 2

if ( a in list ):

print "3 - 變量 a 在給定的列表中 list 中"

else:

print "3 - 變量 a 不在給定的列表中 list 中"

條件

flag = False

name = 'luren'

if name == 'python': # 判斷變量否為'python'

flag = True # 條件成立時(shí)設(shè)置標(biāo)志為真

print 'welcome boss' # 并輸出歡迎信息

else:

print name

num = 5

if num == 3: # 判斷num的值

print 'boss'

elif num == 2:

print 'user'

elif num == 1:

print 'worker'

elif num 0: # 值小于零時(shí)輸出

print 'error'

else:

print 'roadman' # 條件均不成立時(shí)輸出

循環(huán)語(yǔ)句:

count = 0

while (count 9):

print 'The count is:', count

count = count + 1

print "Good bye!"

i = 1

while i 10:

i += 1

if i%2 0: # 非雙數(shù)時(shí)跳過輸出

continue

print i # 輸出雙數(shù)2、4、6、8、10

i = 1

while 1: # 循環(huán)條件為1必定成立

print i # 輸出1~10

i += 1

if i 10: # 當(dāng)i大于10時(shí)跳出循環(huán)

break

for letter in 'Python': # 第一個(gè)實(shí)例

print '當(dāng)前字母 :', letter

fruits = ['banana', 'apple', 'mango']

for fruit in fruits: # 第二個(gè)實(shí)例

print '當(dāng)前水果 :', fruit

print "Good bye!"

獲取用戶輸入:raw_input

var = 1

while var == 1 : # 該條件永遠(yuǎn)為true,循環(huán)將無限執(zhí)行下去

num = raw_input("Enter a number :")

print "You entered: ", num

print "Good bye!"

range,len

fruits = ['banana', 'apple', 'mango']

for index in range(len(fruits)):

print '當(dāng)前水果 :', fruits[index]

print "Good bye!"

python數(shù)學(xué)函數(shù):

abs,cell,cmp,exp,fabs,floor,log,log10,max,min,mod,pow,round,sqrt

randrange

訪問字符串的值

var1 = 'Hello World!'

var2 = "Python Runoob"

print "var1[0]: ", var1[0]

print "var2[1:5]: ", var2[1:5]

轉(zhuǎn)義字符

格式化輸出

print "My name is %s and weight is %d kg!" % ('Zara', 21)

字符串函數(shù):

添加元素

list = [] ## 空列表

list.append('Google') ## 使用 append() 添加元素

list.append('Runoob')

print list

刪除元素

list1 = ['physics', 'chemistry', 1997, 2000]

print list1

del list1[2]

print "After deleting value at index 2 : "

print list1

列表操作

列表方法

刪除字典

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

del dict['Name']; # 刪除鍵是'Name'的條目

dict.clear(); # 清空詞典所有條目

del dict ; # 刪除詞典

print "dict['Age']: ", dict['Age'];

print "dict['School']: ", dict['School'];

字典的函數(shù):

當(dāng)前時(shí)間戳:

import time

time.time()

格式化日期輸出

import time

print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())

a = "Sat Mar 28 22:24:24 2016"

print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))

獲取某個(gè)月日歷:calendar

import calendar

cal = calendar.month(2016, 1)

print "以下輸出2016年1月份的日歷:"

print cal

當(dāng)前日期和時(shí)間

import datetime

i = datetime.datetime.now()

print ("當(dāng)前的日期和時(shí)間是 %s" % i)

print ("ISO格式的日期和時(shí)間是 %s" % i.isoformat() )

print ("當(dāng)前的年份是 %s" %i.year)

print ("當(dāng)前的月份是 %s" %i.month)

print ("當(dāng)前的日期是 %s" %i.day)

print ("dd/mm/yyyy 格式是 %s/%s/%s" % (i.day, i.month, i.year) )

print ("當(dāng)前小時(shí)是 %s" %i.hour)

print ("當(dāng)前分鐘是 %s" %i.minute)

print ("當(dāng)前秒是 %s" %i.second)

不定長(zhǎng)參數(shù):*

lambda:匿名函數(shù)

def....

python模塊搜索路徑

獲取用戶輸入

str = raw_input("請(qǐng)輸入:")

print "你輸入的內(nèi)容是: ", str

input可以接收表達(dá)式

open參數(shù)

write要自己添加換行符

讀取10個(gè)字符

重命名:os.rename

os.remove

os.mkdir os.chdir

os.getcwd

os.rmdir

open參數(shù)

file的方法

異常:

try:

fh = open("testfile", "w")

fh.write("這是一個(gè)測(cè)試文件,用于測(cè)試異常!!")

except IOError:

print "Error: 沒有找到文件或讀取文件失敗"

else:

print "內(nèi)容寫入文件成功"

fh.close()

try:

fh = open("testfile", "w")

fh.write("這是一個(gè)測(cè)試文件,用于測(cè)試異常!!")

finally:

print "Error: 沒有找到文件或讀取文件失敗"

用戶自定義異常:

os 模塊提供了非常豐富的方法用來處理文件和目錄。常用的方法如下表所示:

| 序號(hào) | 方法及描述 |

| 1 |

os.access(path, mode)

檢驗(yàn)權(quán)限模式 |

| 2 |

os.chdir(path)

改變當(dāng)前工作目錄 |

| 3 |

os.chflags(path, flags)

設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記。 |

| 4 |

os.chmod(path, mode)

更改權(quán)限 |

| 5 |

os.chown(path, uid, gid)

更改文件所有者 |

| 6 |

os.chroot(path)

改變當(dāng)前進(jìn)程的根目錄 |

| 7 |

os.close(fd)

關(guān)閉文件描述符 fd |

| 8 |

os.closerange(fd_low, fd_high)

關(guān)閉所有文件描述符,從 fd_low (包含) 到 fd_high (不包含), 錯(cuò)誤會(huì)忽略 |

| 9 |

os.dup(fd)

復(fù)制文件描述符 fd |

| 10 |

os.dup2(fd, fd2)

將一個(gè)文件描述符 fd 復(fù)制到另一個(gè) fd2 |

| 11 |

os.fchdir(fd)

通過文件描述符改變當(dāng)前工作目錄 |

| 12 |

os.fchmod(fd, mode)

改變一個(gè)文件的訪問權(quán)限,該文件由參數(shù)fd指定,參數(shù)mode是Unix下的文件訪問權(quán)限。 |

| 13 |

os.fchown(fd, uid, gid)

修改一個(gè)文件的所有權(quán),這個(gè)函數(shù)修改一個(gè)文件的用戶ID和用戶組ID,該文件由文件描述符fd指定。 |

| 14 |

os.fdatasync(fd)

強(qiáng)制將文件寫入磁盤,該文件由文件描述符fd指定,但是不強(qiáng)制更新文件的狀態(tài)信息。 |

| 15 |

os.fdopen(fd[, mode[, bufsize]])

通過文件描述符 fd 創(chuàng)建一個(gè)文件對(duì)象,并返回這個(gè)文件對(duì)象 |

| 16 |

os.fpathconf(fd, name)

返回一個(gè)打開的文件的系統(tǒng)配置信息。name為檢索的系統(tǒng)配置的值,它也許是一個(gè)定義系統(tǒng)值的字符串,這些名字在很多標(biāo)準(zhǔn)中指定(POSIX.1, Unix 95, Unix 98, 和其它)。 |

| 17 |

os.fstat(fd)

返回文件描述符fd的狀態(tài),像stat()。 |

| 18 |

os.fstatvfs(fd)

返回包含文件描述符fd的文件的文件系統(tǒng)的信息,像 statvfs() |

| 19 |

os.fsync(fd)

強(qiáng)制將文件描述符為fd的文件寫入硬盤。 |

| 20 |

os.ftruncate(fd, length)

裁剪文件描述符fd對(duì)應(yīng)的文件, 所以它最大不能超過文件大小。 |

| 21 |

os.getcwd()

返回當(dāng)前工作目錄 |

| 22 |

os.getcwdu()

返回一個(gè)當(dāng)前工作目錄的Unicode對(duì)象 |

| 23 |

os.isatty(fd)

如果文件描述符fd是打開的,同時(shí)與tty(-like)設(shè)備相連,則返回true, 否則False。 |

| 24 |

os.lchflags(path, flags)

設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記,類似 chflags(),但是沒有軟鏈接 |

| 25 |

os.lchmod(path, mode)

修改連接文件權(quán)限 |

| 26 |

os.lchown(path, uid, gid)

更改文件所有者,類似 chown,但是不追蹤鏈接。 |

| 27 |

os.link(src, dst)

創(chuàng)建硬鏈接,名為參數(shù) dst,指向參數(shù) src |

| 28 |

os.listdir(path)

返回path指定的文件夾包含的文件或文件夾的名字的列表。 |

| 29 |

os.lseek(fd, pos, how)

設(shè)置文件描述符 fd當(dāng)前位置為pos, how方式修改: SEEK_SET 或者 0 設(shè)置從文件開始的計(jì)算的pos; SEEK_CUR或者 1 則從當(dāng)前位置計(jì)算; os.SEEK_END或者2則從文件尾部開始. 在unix,Windows中有效 |

| 30 |

os.lstat(path)

像stat(),但是沒有軟鏈接 |

| 31 |

os.major(device)

從原始的設(shè)備號(hào)中提取設(shè)備major號(hào)碼 (使用stat中的st_dev或者st_rdev field)。 |

| 32 |

os.makedev(major, minor)

以major和minor設(shè)備號(hào)組成一個(gè)原始設(shè)備號(hào) |

| 33 |

os.makedirs(path[, mode])

遞歸文件夾創(chuàng)建函數(shù)。像mkdir(), 但創(chuàng)建的所有intermediate-level文件夾需要包含子文件夾。 |

| 34 |

os.minor(device)

從原始的設(shè)備號(hào)中提取設(shè)備minor號(hào)碼 (使用stat中的st_dev或者st_rdev field )。 |

| 35 |

os.mkdir(path[, mode])

以數(shù)字mode的mode創(chuàng)建一個(gè)名為path的文件夾.默認(rèn)的 mode 是 0777 (八進(jìn)制)。 |

| 36 |

os.mkfifo(path[, mode])

創(chuàng)建命名管道,mode 為數(shù)字,默認(rèn)為 0666 (八進(jìn)制) |

| 37 |

os.mknod(filename[, mode=0600, device])

創(chuàng)建一個(gè)名為filename文件系統(tǒng)節(jié)點(diǎn)(文件,設(shè)備特別文件或者命名pipe)。

|

| 38 |

os.open(file, flags[, mode])

打開一個(gè)文件,并且設(shè)置需要的打開選項(xiàng),mode參數(shù)是可選的 |

| 39 |

os.openpty()

打開一個(gè)新的偽終端對(duì)。返回 pty 和 tty的文件描述符。 |

| 40 |

os.pathconf(path, name)

返回相關(guān)文件的系統(tǒng)配置信息。 |

| 41 |

os.pipe()

創(chuàng)建一個(gè)管道. 返回一對(duì)文件描述符(r, w) 分別為讀和寫 |

| 42 |

os.popen(command[, mode[, bufsize]])

從一個(gè) command 打開一個(gè)管道 |

| 43 |

os.read(fd, n)

從文件描述符 fd 中讀取最多 n 個(gè)字節(jié),返回包含讀取字節(jié)的字符串,文件描述符 fd對(duì)應(yīng)文件已達(dá)到結(jié)尾, 返回一個(gè)空字符串。 |

| 44 |

os.readlink(path)

返回軟鏈接所指向的文件 |

| 45 |

os.remove(path)

刪除路徑為path的文件。如果path 是一個(gè)文件夾,將拋出OSError; 查看下面的rmdir()刪除一個(gè) directory。 |

| 46 |

os.removedirs(path)

遞歸刪除目錄。 |

| 47 |

os.rename(src, dst)

重命名文件或目錄,從 src 到 dst |

| 48 |

os.renames(old, new)

遞歸地對(duì)目錄進(jìn)行更名,也可以對(duì)文件進(jìn)行更名。 |

| 49 |

os.rmdir(path)

刪除path指定的空目錄,如果目錄非空,則拋出一個(gè)OSError異常。 |

| 50 |

os.stat(path)

獲取path指定的路徑的信息,功能等同于C API中的stat()系統(tǒng)調(diào)用。 |

| 51 |

os.stat_float_times([newvalue])

決定stat_result是否以float對(duì)象顯示時(shí)間戳

|

| 52 |

os.statvfs(path)

獲取指定路徑的文件系統(tǒng)統(tǒng)計(jì)信息 |

| 53 |

os.symlink(src, dst)

創(chuàng)建一個(gè)軟鏈接 |

| 54 |

os.tcgetpgrp(fd)

返回與終端fd(一個(gè)由os.open()返回的打開的文件描述符)關(guān)聯(lián)的進(jìn)程組 |

| 55 |

os.tcsetpgrp(fd, pg)

設(shè)置與終端fd(一個(gè)由os.open()返回的打開的文件描述符)關(guān)聯(lián)的進(jìn)程組為pg。 |

| 56 |

os.tempnam([dir[, prefix]])

返回唯一的路徑名用于創(chuàng)建臨時(shí)文件。 |

| 57 |

os.tmpfile()

返回一個(gè)打開的模式為(w+b)的文件對(duì)象 .這文件對(duì)象沒有文件夾入口,沒有文件描述符,將會(huì)自動(dòng)刪除。 |

| 58 |

os.tmpnam()

為創(chuàng)建一個(gè)臨時(shí)文件返回一個(gè)唯一的路徑 |

| 59 |

os.ttyname(fd)

返回一個(gè)字符串,它表示與文件描述符fd 關(guān)聯(lián)的終端設(shè)備。如果fd 沒有與終端設(shè)備關(guān)聯(lián),則引發(fā)一個(gè)異常。 |

| 60 |

os.unlink(path)

刪除文件路徑 |

| 61 |

os.utime(path, times)

返回指定的path文件的訪問和修改的時(shí)間。 |

| 62 |

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

輸出在文件夾中的文件名通過在樹中游走,向上或者向下。 |

| 63 |

os.write(fd, str)

寫入字符串到文件描述符 fd中. 返回實(shí)際寫入的字符串長(zhǎng)度 |

本文題目:pipe函數(shù)python,pipe函數(shù)的功能
本文網(wǎng)址:http://jinyejixie.com/article12/hsdogc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站網(wǎng)站營(yíng)銷、電子商務(wù)微信小程序、關(guān)鍵詞優(yōu)化域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
河北区| 兴文县| 大城县| 新安县| 慈溪市| 长兴县| 玛曲县| 隆德县| 佛山市| 察隅县| 体育| 上犹县| 晋宁县| 富蕴县| 措勤县| 离岛区| 尼玛县| 德阳市| 来安县| 丰城市| 上犹县| 清河县| 拉萨市| 彝良县| 丹棱县| 油尖旺区| 邳州市| 马龙县| 甘谷县| 九江县| 双柏县| 文水县| 临夏市| 微博| 丹阳市| 白玉县| 金川县| 莎车县| 湘西| 麻栗坡县| 石柱|