欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解在Python中以絕對(duì)路徑或者相對(duì)路徑導(dǎo)入文件的方法

 更新時(shí)間:2019年08月30日 09:39:59   作者:cool whidpers  
這篇文章主要介紹了詳解在Python中以絕對(duì)路徑或者相對(duì)路徑導(dǎo)入文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1、在Python中以相對(duì)路徑或者絕對(duì)路徑來(lái)導(dǎo)入文件或者模塊的方法

今天在調(diào)試代碼的時(shí)候,程序一直提示沒(méi)有該模塊,一直很納悶,因?yàn)槲覍?dǎo)入文件一直是用絕對(duì)路徑進(jìn)行導(dǎo)入的。按道理來(lái)講是不會(huì)出現(xiàn)模塊找不到的情況的。

最后仔細(xì)分析了整個(gè)代碼的目錄結(jié)構(gòu),才發(fā)現(xiàn)了問(wèn)題。

下面依次來(lái)說(shuō)明一下今天的情況

先看導(dǎo)入的代碼:

在demo——mnist.py文件中執(zhí)行以下兩種導(dǎo)入操作
# 第一處
from gcforest.gcforest import GCForest
from gcforest.utils.config_utils import load_json
# 第二處
config = load_json("demo_mnist-ca.json") # 里面?zhèn)魅氲氖俏募奈恢?,這個(gè)函數(shù)是讀取配置文件的內(nèi)容

然后看一下目錄的結(jié)構(gòu)

目錄的具體結(jié)構(gòu) 

在此例中,demo_mnist,py為主文件。它第一處要導(dǎo)入的是它當(dāng)前目錄的父目錄下的一個(gè)子目錄中的一個(gè)目錄中的文件。

所以以絕對(duì)路徑導(dǎo)入這個(gè)文件就是 from lib.gcforest.gcforet import GCForest

以相對(duì)路徑導(dǎo)入這個(gè)文件就是 from ..gcforest.gcforet import GCForest

第二處導(dǎo)入的是它統(tǒng)一個(gè)目錄下的另一個(gè)文件,所以可以直接導(dǎo)入
所以修改的導(dǎo)入代碼為:config = load_json("demo_mnist-ca.json")

2、 順便復(fù)習(xí)一下相對(duì)路徑和絕對(duì)路徑的概念

絕對(duì)路徑就是文件的真正存在的路徑,是指從硬盤(pán)的根目錄(盤(pán)符)開(kāi)始,進(jìn)行一級(jí)級(jí)目錄指向文件。

相對(duì)路徑就是以當(dāng)前文件為基準(zhǔn)進(jìn)行一級(jí)級(jí)目錄指向被引用的資源文件。

以下是常用的表示當(dāng)前目錄和當(dāng)前目錄的父級(jí)目錄的標(biāo)識(shí)符

../ 表示當(dāng)前文件所在的目錄的上一級(jí)目錄
./ 表示當(dāng)前文件所在的目錄(可以省略)
/ 表示當(dāng)前站點(diǎn)的根目錄(域名映射的硬盤(pán)目錄)

在Python中可以驗(yàn)證一下上述的標(biāo)識(shí)方法:

測(cè)試的目錄結(jié)構(gòu):

目錄的結(jié)構(gòu)信息

import os
path1=os.path.abspath('.') # 表示當(dāng)前所處的文件夾的絕對(duì)路徑
print(path1)
path2=os.path.abspath('..') # 表示當(dāng)前所處的文件夾上一級(jí)文件夾的絕對(duì)路徑
print(path2)
# D:/PycharmProjects/mnistCheck/AbsolutepathAndrelativepath.py
D:\PycharmProjects\mnistCheck
D:\PycharmProjects

3、 再了解一下Python sys.path的使用

sys.path是python的搜索模塊的路徑集,是一個(gè)list,如下:

[
'D:\\PycharmProjects\\mnistCheck', 'D:\\PycharmProjects\\mnistCheck', 'D:\\PycharmProjects\\KerasDataSettry', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow\\python35.zip', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow\\DLLs', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow\\lib', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow\\lib\\site-packages', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\Sphinx-1.6.3-py3.5.egg'
]

可以在python 環(huán)境下使用: .

sys.path.append(‘你的模塊的名稱')。
sys.path.insert(0,'模塊的名稱')

添加相關(guān)的路徑,但在退出python環(huán)境后自己添加的路徑就會(huì)自動(dòng)消失!

代碼中的實(shí)現(xiàn)如下:

import sys
sys.path.append('C:\Users\Administrator\Desktop\ExperimentAss\gcForest-master')

4、最后了解一下 python 在不同層級(jí)目錄import 模塊的方法(重點(diǎn))

有一個(gè)文件夾/home/a, 里面有個(gè)模塊叫b.py, 我怎么把他import到程序里?

方法一:    (屬于剛開(kāi)始分析的代碼里第一種情況)

import sys; 
sys.path.append(“/home/a/”) 
import b

方法二:

在目錄里面增加__init__.py文件,里面可以寫(xiě)import時(shí)執(zhí)行的代碼,當(dāng)然也可以留空就可以.

import home.a.b

方法三:

from home.a.b import * 

前提 home、a中都包括__init__.py 即:要導(dǎo)入的文件的當(dāng)前目錄和父目錄都要有init.py文件

Python包含子目錄中的模塊方法比較簡(jiǎn)單,關(guān)鍵是能夠在sys.path里面找到通向模塊文件的路徑。

下面將具體介紹幾種常用情況:

(1)主程序與模塊程序在同一目錄下:

如下面程序結(jié)構(gòu):

– src 
  |– mod1.py 
  |– test1.py

若在程序test1.py中導(dǎo)入模塊mod1, 則直接使用import mod1或from mod1 import *;

(2)主程序所在目錄是模塊所在目錄的父(或祖輩)目錄

如下面程序結(jié)構(gòu):

– src 
|– mod1.py 
|– mod2 
  | – mod2.py 
– test1.py

若在程序test1.py中導(dǎo)入模塊mod2, 需要在mod2文件夾中建立空文件__init__.py文件(也可以在該文件中自定義輸出模塊接口); 然后使用 from mod2.mod2 import * 或import mod2.mod2.

(3)主程序?qū)肷蠈幽夸浿心K或其他目錄(平級(jí))下的模塊
如下面程序結(jié)構(gòu):

– src 
  |– mod1.py 
  |– mod2 
   |– mod2.py 
  |– sub 
    | – test2.py 
  – test1.py 

若在程序test2.py中導(dǎo)入模塊mod1.py和mod2.py。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立該文件。然后調(diào)用方式如下:

下面程序執(zhí)行方式均在程序文件所在目錄下執(zhí)行,如test2.py是在cd sub;之后執(zhí)行python test2.py

而test1.py是在cd src;之后執(zhí)行python test1.py; 不保證在src目錄下執(zhí)行python sub/test2.py成功。

import sys 
sys.path.append(“..”) 
import mod1 
import mod2.mod2

(4)從(3)可以看出,導(dǎo)入模塊關(guān)鍵是能夠根據(jù)sys.path環(huán)境變量的值,找到具體模塊的路徑。這里僅介紹上面三種簡(jiǎn)單情況。

總結(jié):

通過(guò)總結(jié)可以發(fā)現(xiàn),當(dāng)你要導(dǎo)入的文件在和你的當(dāng)前文件在同一個(gè)目錄時(shí),你直接導(dǎo)入這個(gè)文件名就好了。

當(dāng)你要導(dǎo)入的文件或者目錄不和你的當(dāng)前文件同目錄時(shí),你需要跳到這個(gè)你要導(dǎo)入文件的父級(jí)目錄,然后一級(jí)一級(jí)的用點(diǎn)號(hào)連接走過(guò)的目錄或者文件,然后就可以了 至于要怎么跳到這個(gè)這個(gè)父級(jí)目錄。比較通用的就是,將父級(jí)目錄加入系統(tǒng)路徑,然后用點(diǎn)號(hào)一級(jí)一級(jí)的尋找,直到到達(dá)你要導(dǎo)入的模塊。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在python中以相同順序shuffle兩個(gè)list的方法

    在python中以相同順序shuffle兩個(gè)list的方法

    今天小編就為大家分享一篇在python中以相同順序shuffle兩個(gè)list的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Pandas數(shù)據(jù)分析之pandas數(shù)據(jù)透視表和交叉表

    Pandas數(shù)據(jù)分析之pandas數(shù)據(jù)透視表和交叉表

    這篇文章主要介紹了Pandas數(shù)據(jù)分析之pandas數(shù)據(jù)透視表和交叉表,pandas對(duì)數(shù)據(jù)框也可以像excel一樣進(jìn)行數(shù)據(jù)透視表整合之類的操作。主要是針對(duì)分類數(shù)據(jù)進(jìn)行操作,還可以計(jì)算數(shù)值型數(shù)據(jù),去滿足復(fù)雜的分類數(shù)據(jù)整理的邏輯
    2022-08-08
  • 如何利用python 讀取配置文件

    如何利用python 讀取配置文件

    這篇文章主要介紹了如何利用python 讀取配置文件,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • django實(shí)現(xiàn)web接口 python3模擬Post請(qǐng)求方式

    django實(shí)現(xiàn)web接口 python3模擬Post請(qǐng)求方式

    今天小編就為大家分享一篇django實(shí)現(xiàn)web接口 python3模擬Post請(qǐng)求方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 如何將numpy二維數(shù)組中的np.nan值替換為指定的值

    如何將numpy二維數(shù)組中的np.nan值替換為指定的值

    這篇文章主要介紹了將numpy二維數(shù)組中的np.nan值替換為指定的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • PyCharm使用技巧之設(shè)置背景圖片方式

    PyCharm使用技巧之設(shè)置背景圖片方式

    這篇文章主要介紹了PyCharm使用技巧之設(shè)置背景圖片方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • python實(shí)現(xiàn)csv格式文件轉(zhuǎn)為asc格式文件的方法

    python實(shí)現(xiàn)csv格式文件轉(zhuǎn)為asc格式文件的方法

    下面小編就為大家分享一篇python實(shí)現(xiàn)csv格式文件轉(zhuǎn)為asc格式文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Python有關(guān)Unicode UTF-8 GBK編碼問(wèn)題詳解

    Python有關(guān)Unicode UTF-8 GBK編碼問(wèn)題詳解

    本文主要介紹了Python有關(guān)Unicode UTF-8 GBK編碼問(wèn)題詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Python SMTP發(fā)送電子郵件的示例

    Python SMTP發(fā)送電子郵件的示例

    這篇文章主要介紹了Python SMTP發(fā)送電子郵件的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • python問(wèn)題匯總之pycharm查找不到安裝的庫(kù)解決

    python問(wèn)題匯總之pycharm查找不到安裝的庫(kù)解決

    這篇文章主要給大家介紹了關(guān)于python問(wèn)題匯總之pycharm查找不到安裝庫(kù)的解決方法,PyCharm是一款非常流行的Python集成開(kāi)發(fā)環(huán)境(IDE),它提供了豐富的功能和插件,可以幫助程序員更高效地編寫(xiě)Python代碼,需要的朋友可以參考下
    2023-09-09

最新評(píng)論