Stackoverflow是一個很是優秀的與程序相關的IT技術問答的英文網站。不管你處在什麼狀態,當你編程碰到問題的時候你總能找到你想要的答案。python
本期翻譯有五道題目,題目目錄: 問題一:在Python中我怎樣檢測一個文件是否存在? 問題二:在Python中我怎樣使用一個外部命令? 問題三:對一個字典按照值(values)進行排序 問題四:檢測一個list爲空的最佳方案? 問題五:如何在一個函數體內使用全局變量而不是建立。
問題一:How do I check whether a file exists using Python?
問題描述:Python中我怎樣在不使用測試語句的狀況下檢測一個文件是否存在。shell
回答(得到2392贊同) :
你能夠使用Python中的內建函數:os.path.isfile數據庫
Return True if path is an existing regular file. This follows symbolic links, so both islink() and isfile() can be true for the same path.編程
import os.path os.path.isfile(fname)
若是你要確認它確實是一個文件,而不是其它的什麼東西。函數
在 Python 3.4中, pathlib module提供了一個面向對象的方法,看下面的實例代碼:測試
from pathlib import Path my_file = Path("/path/to/file") if my_file.is_file(): # file exists
問題二:Calling an external command in Python
問題描述:我怎樣在Python腳本中使用一個外部命令:就像Unix的shell或者Windows的命令提示符。網站
回答(得到2222贊同) :
咱們來看一下標準庫中的 subprocess modulespa
from subprocess import call call(["ls", "-l"])
subprocess模塊與系統模塊(system)比較,subprocess模塊的的優點是更加靈活。我以爲os.system模塊是過期的,我以爲他應該是這樣的:replacing-older-functions-with-the-subprocess-module翻譯
可是,對於快速的一次性的腳本,使用os.system就足夠了。code
問題三:Sort a Python dictionary by value
問題描述:
我有一個字典(dictionary),這個字典的值是從某個數據庫的兩個字段讀取的:一個字段是string類型,另外一個一個字段是 numeric類型,這個string字段是惟一的,因此該字段做爲字典的鍵(key)。
我如今能夠按照鍵(keys)進行排序,可是我怎樣才能按照值(values)排序呢?
回答(得到2300贊同) :
對一個字典(dict)進行排序是不可能的,你能獲得的僅僅是通過排序的字典的表示。字典生來就是無序的,可是其餘的數據類型好比:list(列表)、tuple(元組)是有序的,因此你須要一個能排序的表示:他多是一個list或者是一個元組列表。
例如:
import operator x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0} sorted_x = sorted(x.items(), key=operator.itemgetter(1))
sorted_x將是一個元組列表,這個列表是按照每一個元組的第二個元素進行排序的。
dict(sorted_x) == x.
而後像上面這樣,再把sorted_x轉成一個字典,dict(sorted_x)就是你想要的結果。這樣你就能完成按照字典的values進行排序了。
import operator x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0} sorted_x = sorted(x.items(), key=operator.itemgetter(0))
問題四:Best way to check if a list is empty
問題描述:
舉個例子,如今我有以下代碼:
a = []
我怎樣才能去判斷這個列表a爲空
回答(得到2418贊同) :
if not a: print("List is empty")
使用空列表的隱式booleanness是至關Python化的。
問題五:Using global variables in a function other than the one that created them
問題描述:
若是我在一個函數體內建立了一個全局變量,我怎樣才能在其餘的函數內使用這個變量呢?我須要把這個全局變量存儲在須要使用這個全局變量的函數的局部變量中嗎?
回答(得到2429贊同) :
你能夠經過在每個你須要使用全局變量的函數體內用global關鍵詞來描述這個變量從而能夠在函數體內使用這個全局變量。
globvar = 0 def set_globvar_to_one(): global globvar # 改變修改globvar的值須要global申明 globvar = 1 def print_globvar(): print globvar # 讀取globvar的值不須要global申明 set_globvar_to_one() print_globvar() # 打印1
個人理解是:全局變量是很是危險的,Python但願你明白你在使用全局變量,所以在每次使用的時候,它都須要關鍵詞:global