1. 程式人生 > >Python(pycharm)在windows下路徑 ( ' / ' 與' \ ' )的問題

Python(pycharm)在windows下路徑 ( ' / ' 與' \ ' )的問題

1.0 首先了解Python中與pycharm,windows互動的模組(這二個模組可以避免出現路徑錯誤的問題)
sys模組 (側重Python與pycharm互動)
提供的與路徑相關的方法有:

__file__               # 當前執行檔案所在的絕對路徑
sys.path              # 當前執行檔案下所有的路徑 
sys.argv              # 當前執行檔案所在的絕對路徑,列表的形式['絕對路徑']
sys.path.append(路徑)           # 新增路徑到當前的檔案下

應用例項:一:
當start執行檔案需要匯入core資料夾下的模組時,路徑的拼接,需要sys模組,
但是首先還要介紹os模組
os模組

(側重Python與windows的互動)

os.path.abspath()     規範化路徑(重要 可以將不確定'/'與'\'路徑規範化)   # 規範的路徑:E:/text1/練習與測試2/05text路徑.py
os.path.dirname('E:/text1/練習與測試2/05text路徑.py')             # 獲取路徑: E:/text1/練習與測試2
os.path.basename('E:/text1/練習與測試2/05text路徑.py'))        # 獲取路徑: 05text路徑.py
os.path.join(path1,path2)                                                           # 路徑的拼接
os.path.exists(path)                                                                   # 判斷檔案是否存在

應用例項一:
Python(pycharm)在windows下路徑 (  ' / ' 與' \ '  )的問題
注:要想在start檔案中執行server中的func_server方法,就必須將core的路勁新增到start檔案中,當start檔案路徑中存在 E:/text1/day32/demo6_file,才能通過匯入core,找到server,引用其中的func_server方法;

import os
import sys

ori_path = __file__                                # E:/text1/day32/demo6_file/bin/start.py
path = os.path.dirname(ori_path)         # E:/text1/day32/demo6_file/bin
base_path = os.path.dirname(path)     # E:/text1/day32/demo6_file
sys.path.append(base_path)

from core import server
from core import client

server.func_server()

所有的這些操作都不會出現路徑的問題但是當我們判斷某個檔案是否存在,或者要拼接檔案的路徑時,就可能會遇到路徑出錯的問題.
2.0 ' / '斜槓與' \ '反斜槓
Python在windows下的標準路徑是:E:/text1/練習與測試2/05text路徑.py 分割符是斜槓' / ' ,但是仍然可以識別 反斜槓' \ '
方法一: ' r ' 轉義

import sys
import os

print(__file__)     # E:/text1/練習與測試2/05text路徑.py
print(os.path.exists('E:/text1/練習與測試2/05text路徑.py'))              # True
print(os.path.exists('E:\text1\練習與測試2\05text路徑.py'))              # Flase
print(os.path.exists(r'E:\text1\練習與測試2\05text路徑.py'))             # True

path=os.path.abspath(r'E:\text1\練習與測試2\05text路徑.py')
print(path)                                                                                           # E:\text1\練習與測試2\05text路徑.py
print(os.path.exists(path))                                                                   # True


方法二: 路徑拼接時,os.path.abspath('') 規範路徑

path=os.path.join(r'E:\text1\練習與測試2','05text路徑.py')
new_path=os.path.abspath(path)
print(os.path.exists(new_path))

方法三: 新增副檔名(字尾名)

import sys
import os

head = {'filename': '1.EPIC**.mp4**',     # 加字尾名   (這不就是要知道檔案的型別嗎?)
        'filesize': None,
        'filepath': r'C:\Users\Administrator\Desktop\英語\Download\倫敦街頭美食',
        'file_name': None}

file_name = os.path.join(head['filepath'], head['filename'])
print(os.path.exists(file_name))
file_name = os.path.abspath(file_name)
print(os.path.exists(file_name))

注:這三種方法要結合的用
附: 常見的檔案字尾
(出處: https://jingyan.baidu.com/article/e3c78d64752db43c4c85f5fc.html?qq-pf-to=pcqq.group )
.AVI .mp4影像檔案
.BAK 備份檔案
.BAT DOS中的批處理檔案
.BMP 點陣圖檔案
.COM, .EXE 可執行的程式檔案
.DLL 動態連結庫檔案
.DOC Word字處理文件
.DRV 裝置驅動程式檔案
.ICO 圖示檔案
.INF 安裝資訊檔案
.INI 系統配置檔案
.CHM 已編譯的HTML幫助檔案
.JPG 一種常用圖形檔案
.MID MIDI音樂檔案
.MDB Access資料庫檔案
.RTF 豐富文字格式檔案
.SCR 螢幕保護程式檔案
.SYS 系統檔案
.TTF TrueType字型檔案
.TXT 文字檔案
.XLS Excel電子表格檔案
.WAV 波形檔案
.HTM 用於WWW(World Wide Web)的超級文字檔案