當前位置:首頁 » 編程語言 » pythonaz

pythonaz

發布時間: 2025-02-25 09:13:49

1. 如何批量刪除文件名中的一段

我用python代碼實現的,如圖:

代碼執行後

以下為文字代碼:

#/usr/bin/python3

# -*- coding: UTF-8 -*-

import os,re

def reName(file_path):

    list = os.listdir(file_path) #列出文件列表

    for oldname in list: #對文件列表進行遍歷

        newname = re.sub(r'【雲少福利包d】','',oldname) #獲取去掉括弧之後的文件名

        #print(newname)

        os.rename(os.path.join(file_path,oldname),os.path.join(file_path,newname)) 

        #將文件名批量替換

    print('批量重命名運行完成!') 

if __name__ == '__main__':

    filepath = 'D:/scripts/py/test' #定義文件路徑

    reName(filepath) #調用reName函數

2. python中for循環放在後面要怎麼理解

i因為閉包,lambda生成之後i引用的就是for循環中的i

建議你看一下python的列表生成器,

f = [(lambda n : i + n) for i in range(10)] 等同於

f=[]

for i in range(10)

f.append(lambda n : i + n)

下面是相關內容

列表生成式即List Comprehensions,是Python內置的非常簡單卻強大的可以用來創建list的生成式。

舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用range(1, 11):

>>> range(1, 11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎麼做?方法一是循環:

>>> L = []>>> for x in range(1, 11):... L.append(x * x)
...>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循環太繁瑣,而列表生成式則可以用一行語句代替循環生成上面的list:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

寫列表生成式時,把要生成的元素x * x放到前面,後面跟for循環,就可以把list創建出來,十分有用,多寫幾次,很快就可以熟悉這種語法。

for循環後面還可以加上if判斷,這樣我們就可以篩選出僅偶數的平方:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

還可以使用兩層循環,可以生成全排列:

>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

三層和三層以上的循環就很少用到了。

運用列表生成式,可以寫出非常簡潔的代碼。例如,列出當前目錄下的所有文件和目錄名,可以通過一行代碼實現:

>>> import os # 導入os模塊,模塊的概念後面講到>>> [d for d in os.listdir('.')] # os.listdir可以列出文件和目錄['.emacs.d', '.ssh', '.Trash', 'Adlm', 'Applications', 'Desktop', 'Documents', 'Downloads', 'Library', 'Movies', 'Music', 'Pictures', 'Public', 'VirtualBox VMs', 'Workspace', 'XCode']

for循環其實可以同時使用兩個甚至多個變數,比如dict的iteritems()可以同時迭代key和value:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }>>> for k, v in d.iteritems():... print k, '=', v... y = B
x = A
z = C

因此,列表生成式也可以使用兩個變數來生成list:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }>>> [k + '=' + v for k, v in d.iteritems()]
['y=B', 'x=A', 'z=C']

最後把一個list中所有的字元串變成小寫:

>>> L = ['Hello', 'World', 'IBM', 'Apple']>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']

小結

運用列表生成式,可以快速生成list,可以通過一個list推導出另一個list,而代碼卻十分簡潔。

思考:如果list中既包含字元串,又包含整數,由於非字元串類型沒有lower()方法,所以列表生成式會報錯:

>>> L = ['Hello', 'World', 18, 'Apple', None]
>>> [s.lower() for s in L]
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>AttributeError: 'int' object has no attribute 'lower'

使用內建的isinstance函數可以判斷一個變數是不是字元串:

>>> x = 'abc'>>> y = 123>>> isinstance(x, str)True>>> isinstance(y, str)False

請修改列表生成式,通過添加if語句保證列表生成式能正確地執行。

3. python 正則表達式^((![A-Z]).)*$ 能具體說說什麼意思嗎不太理解。

先說說題外話,(?!pattern)為正向否定預查,(?<!pattern)為反向否定預查。你這里應該是要用反向否定預查。
再來說這段正則表達式的想表達的意思,此段正則表達式表示,奇數位置不能是大寫字母而且字元串長度必須是偶數。來解釋下基數為不能為大寫,就拿1、2位置來舉例,不能是"Az"可以是"_A"。

4. bat獲取python文件的返回值

你要說具體一點,你的需求太另類了。
獲取到的信息你要放在哪呢,是要做什麼處理?
如果你是要用另一個程序接收,那是python與另一個程序的通訊問題。
如果只是保存到哪個文件,你的python程序就可以完成。

熱點內容
p2p網貸java源碼下載 發布:2025-02-25 12:42:37 瀏覽:910
安卓144hz什麼時候上市 發布:2025-02-25 12:15:11 瀏覽:693
linux設計與實現 發布:2025-02-25 12:08:28 瀏覽:881
腳本去下載 發布:2025-02-25 12:07:05 瀏覽:46
程序員android 發布:2025-02-25 12:01:30 瀏覽:881
androidoncreate 發布:2025-02-25 11:56:28 瀏覽:981
魔獸世界人機腳本 發布:2025-02-25 11:41:40 瀏覽:466
三個點的稅點怎麼演算法 發布:2025-02-25 11:36:25 瀏覽:274
惠介雲伺服器下載 發布:2025-02-25 11:34:54 瀏覽:95
桌面解壓 發布:2025-02-25 11:12:13 瀏覽:968