『壹』 為什麼Python讀取絕對路徑要用正斜杠
在windows讀取文件可以用\,但在字元串裡面\被作為轉義字元使用,那麼在描述路徑時有兩種方式
'c:\\a.txt',轉義的方式
r'c:\a.txt',聲明字元串不需要轉義
這樣就實現了用\來訪問路徑。
而Linux下路徑是用/來分割,同樣描述路徑有兩種方式,總是不舒服。
python提供了兼容處理,讓Linux風格路徑在windows下可用,於是很多時候大家都會選Linux風格。這樣簡單的腳本可以在兩個平台下都能運行。
python對windows路徑處理有一個庫叫ntpath。
windows用\分割路徑是因為當年DOS時代將/作為參數引導使用了,懶惰的某人不願花時間處理相關解析,於是為了趕工粗暴的使用了\替代。
『貳』 python文件名獲取文件路徑
概述
使用os.path.abspath()函數來獲取文件絕對路徑
解析
文件目錄結構如下:
os.path.abspath(path)返回path規范化的絕對路徑(但這個路徑不一定是真實的路徑),如果path僅是一個文件名,使用該函數後返回的路徑是當前工作目錄路徑連接改文件名後所組成的新的路徑名。
>>> import os.path
>>> os.path.abspath("a.py")
'C:\Users\Administrator\a.py'
os.path.split(path)將path分割成目錄和文件名二元組返回
>>> os.path.split("C:\Users\Administrator\a.py")
('C:\Users\Administrator', 'a.py')
os.path.dirname(path)返回path的目錄,其實就是os.path.split(path)的第一個元素
>>> os.path.dirname("C:\Users\Administrator\a.py")
'C:\Users\Administrator'
os.path.basename(path)返回path最後的文件名。如果path以/或結尾,就會返回空值。即os.path.split(path)的第二個元素。
>>> os.path.basename("C:\Users\Administrator\a.py")
'a.py'
os.path.commonprefix(list)返回list中所有path共有的最長的路徑,從左向右,相同字元。
os.path.exists(path)如果path存在,返回True;如果path不存在,返回False。
os.path.isabs(path)如果path是絕對路徑,返回True。
os.path.normpath(path)規范path字元串形式(規範文件路徑)
os.path.isfile(path)判斷路徑是否為文件,是返回True,否則返回False
os.path.isdir(path)如果path是一個存在的目錄,返回True,否則返貨False。
os.path.islink(path)是否是鏈接;但如果系統不支持鏈接,則返回False。
『叄』 python 如何獲取某個文件的絕對地址
暈,假設你的文件名是filename
os.path.abspath(filename)得到的就是文件名的絕對地址
如果你相得到絕對目錄可以這樣子
os.path.abspath(os.path.dirname(filename))
『肆』 請教一個Python中用os.getcwd或取絕對路徑的問題
os.path.abspath這個才是絕對路徑的方法啊
os.getcwd是當前目錄
比如:os.path.abspath(__file__) --》 當前腳本文件的絕對路徑
『伍』 在python中,如何獲取腳本文件所在路徑
用內置函數: __file__
給一個Django的示例,這是獲取當前文件的上一級目錄的實例。
importos
#:os.path.join(BASE_DIR,...)
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
『陸』 Python怎樣得到資源文件的絕對路徑
importsys
importos.path
package="foo"
resource="bar.ini"
#pkgutil.get_data(package,resource)
os.path.abspath(os.path.join(os.path.dirname(sys.moles[package].__file__),resource))
如果你說的是包的資源文件,可以用上面的方法獲取資源文件的絕對路徑。
『柒』 如何獲得Python腳本所在目錄的位置
如果想得到腳本的路徑,那麼得這樣:
os.path.split(os.path.realpath(__file__))[0]
其中__file__雖然是所在.py文件的完整路徑,但是這個變數有時候返回相對路徑,有時候返回絕對路徑,因此還要用os.path.realpath()函數來處理一下。
os.getcwd()是不對的,只能得到當前目錄位置
『捌』 如何使用Python獲取某個路徑下面所有文件的絕對路徑以及其他操作
import os
dir="e:\\"
for root,dirs,files in os.walk(dir):
for file in files:
print os.path.join(root,file)
『玖』 如何用python查詢文件路勁
最近在用Python腳本處理文件夾下面的文件名的搜索和重命名。其中碰到如何遞歸遍歷文件夾下面所有的文件,找到需要的文件,並且重命名的問題。其實如果看看Python的document,還是比較簡單的,這里直接給出使用方法,免得大家還要花精力去查找。
環境:
文件夾結構:
----path1
----path1-1
----path1-1.1.txt
----path1-2
----path1.1.txt
----path2
----recursiveDir.py
文件夾結構如上所示。
代碼分析(recursiveDir.py):
[python] view plain
<span style="font-size:18px;">import os
'''''
本腳本用來演示如何遍歷py腳本所在文件夾下面所有的文件(包括子文件夾以及其中包含的文件)。
重點演示如何獲取每個文件的絕對路徑。注意os.path.join(dirpath, filename)的用法。
'''
rootdir = os.getcwd()
print('rootdir = ' + rootdir)
for (dirpath, dirnames, filenames) in os.walk(rootdir):
#print('dirpath = ' + dirpath)
for dirname in dirnames:
print('dirname = ' + dirname)
for filename in filenames:
#下面的列印結果類似為:D:\pythonDirDemo\path1\path1-1\path1-1.1.txt
print(os.path.join(dirpath, filename))
if(filename=='path1-1.1.txt'):
os.chdir(dirpath)
#os.rename(os.path.join(dirpath, filename), dirpath + os.sep + 'path1-1.1.new.txt')
os.rename('path1-1.1.txt', 'path1-1.1.new.txt')
#os.remove(os.path.join(dirpath, filename))
#下面的輸出為fileName = path1-1.1.txt,並未包含絕對路徑,所以需要使用os.path.join來鏈接,獲取絕對路徑
print('fileName = ' + filename)
print('------------------one circle end-------------------')</span>
所以可以看到程序中使用os.path.join(dirpath, filename)來拼接出絕對路徑出來。注意下面的重命名用法,可以將工作目錄切換到os.chdir(dirpath),這樣就可以直接用os.rename(oldfile, newfile).Python會自動到dirpath下面查找oldfile並且重命名為newfile。注意工作目錄的含義:在Python的GUI中,使用os.getcwd()可以獲取到當前工作目錄。測試如下:
[html] view plain
<span style="font-size:18px;">>>> os.chdir('D:')
>>> os.getcwd()
'D:\\pythonDirDemo\\path1\\path1-1'
>>> os.chdir('D:\\')
>>> os.getcwd()
'D:\\'</span>
可見卻是可以用chdir改變工作目錄。這個代碼只是在重命名的時候用到的小技巧而已,大家知道有這個東西就行了,不過調用chdir之後,後續再獲取getcwd()就會被影響,所以警惕。
『拾』 python中的絕對路徑和相對路徑均如何理解呢
Python中的絕對路徑和其他語言並無區別。
Python中的相對路徑則有所不同,一般語言的相對路徑的父目錄指的是文件所在目錄,而Python的相對路徑的父目錄指的是當前腳本執行目錄。舉個簡單的例子:我有一個放在/xyz/bin目錄下的腳本 test.py。那麼他的絕對路徑就是/xyz/bin,如果你在你的test腳本中使用了相對路徑的話,那麼test.py中的相對路徑是根據腳本執行時你的當前目錄所決定的。比如,如果你在/xyz/bin目錄下還有一個文件test.txt,這是test.py中所使用的文件,那麼在/xyz/bin目錄下執行./test.py是沒有問題的。但是如果你在其他目錄執行python /xyz/bin/test.py,如果其他目錄沒有test.txt文件,那麼必然會報錯。因為此時相對路徑的父目錄已經不是/xyz/bin了,自然找不到/xyz/bin/test.txt。