python之路徑導入


問題:

 

最近在學習import的時候,發現不像import xxx,或者from xxx import ooo

這樣簡單。比如,看下面這個圖:

要導入才能在te.py調用pre.tab.py??

 

直接導入:

import pre_tab

 

Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/laonanhai/shop_store/test/te.py", line 14, in <module>
    import pre_tab
ImportError: No module named 'pre_tab'

 

知識點:

 

  通過看視頻,學到了下面兩點:

1. os.path.abspath(__file__) 返回當前文件的絕對路徑
在te.py文件下:
import os
x = os.path.abspath(__file__)
print(x)
輸出:
 View Code


2.os.path.dirname() 返回當前文件的上一層路徑
在te.py文件下:
x1 = os.path.dirname(os.path.dirname(x))
print(x1)
sys.path.append(x1)

print(sys.path

輸出:

 View Code

 


最后,通過print(sys.path)可以看到,
C:\Users\Administrator\PycharmProjects\laonanhai\shop_store路徑已經加入sys.path


額外收獲

在pre_tab.py文件下:
"""
C:\Users\Administrator\PycharmProjects\laonanhai\shop_store\pre_tab.py
"""
print("AA")
竟然,曝錯了!!!

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 3-4: truncated \UXXXXXXXX escape

 

后來參考了

http://blog.csdn.net/wlsyn/article/details/49613867原來是文件路徑中,反斜杠 \u 報的錯,在反斜杠后面再加一個反斜杠轉義了就行了,經測試,注釋后的代碼不報錯,去掉注釋,也能正常讀寫文件


隨筆補充:關於__import__

復制代碼
obj = __import__("lib.manager")
print(obj)    #沒有導入manager.py
#<module 'lib' from 'C:\\Users\\Administrator\\PycharmProjects\\laonanhai\\day6_test\\lib\\__init__.py'>
obj.order()     #AttributeError: 'module' object has no attribute 'order'

obj1 = __import__("lib.manager", fromlist=True) #表示按路徑連接方式導入 print(obj1) #導入manager #<module 'lib.manager' from 'C:\\Users\\Administrator\\PycharmProjects\\laonanhai\\day6_test\\lib\\manager.py'> obj1.order() #成功執行lib下的manager.py的order()方法
復制代碼
 
        

 



出處:http://www.cnblogs.com/0zcl


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM