㈠ python中導入py文件為什麼是導入模塊
項目中想使用以前的代碼,或者什麼樣的需求致使你需要導入外部的包
如果是web 下,比如說django ,那麼你新建一個app,把你需要導入的說用東東,都寫到這個app中,然後在setting中的app也配上基本就ok了
如果是本地代碼,可以有幾種方式,
1、這種最簡單,也可能最不實用,將你的外部文件放到跟需要調用外部文件的文件同一個包下,同一目錄
folder
------toinvoke.py
------tobeinvoded.py
這樣在toinvoke.py 中引入
import toveinvoked 或 from tobeinvoked import *
即可
2、你的其他文件不是單個文件,或者不能如上所說放到同一目錄下,而是在不同目錄中,子目錄
folder
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
這種情況,現在folder 下新建一個__init__.py 的空文件,此時的folder不再是一個普通的文件夾,而是一個包 package,現在像這樣
folder #文件夾 現在的性質為一個python包package
------__init__.py
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
這樣在toinvoke.py 中引入
import folder.toveinvoked 或 from folder.tobeinvoked import *
即可
3、同理,如果是如下的情況,folderB中的模塊要調用folderA中的模塊,方法同上,有什麼改變,你已經知道了
folderA
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
folderB
--------toinvoke.py
這樣在toinvoke.py 中引入
import folder.toveinvoked 或 from folder.tobeinvoked import *
即可
4、將要被調用的代碼拷貝到$PYTHONHOME$\Lib\site-packages 下面,這個就跟Eclipse插件安裝差不多
5、在$PYTHONHOME$\Lib\site-packages 下面新建一個.pth文件,比如說是MyPackage.pth,裡面的內容是你的包的絕對路徑比如:E:/PythonPrj
那麼,在E:/PythonPrj下的所有包都可以按照包所在的相對路徑引入,這個跟Eclipse插件安裝的link 方式差不多
6、跟上面的差不多,也可以加個環境變數,這個就不多說了
總結、看看Python的包搜索路徑
Python會在以下路徑中搜索它想要尋找的模塊:
1. 程序所在的文件夾
2. 標准庫的安裝路徑
3. 操作系統環境變數PYTHONPATH所包含的路徑
將自定義庫的路徑添加到Python的庫路徑中去,有如下兩種方法:
1. 動態的添加庫路徑。在程序運行過程中修改sys.path的值,添加自己的庫路徑
import sys
sys.path.append(r'your_path')
2. 在Python安裝目錄下的\Lib\site-packages文件夾中建立一個.pth文件,內容為自己寫的庫路徑。示例如下
E:\\work\\Python\\http
E:\\work\\Python\\logging
㈡ python怎麼運行py文件
1、首先在資源管理器里復制一下py文件存放的路徑,按下windows鍵+r,在運行里輸入cmd,回車打開命令行:
㈢ 如何使用好pyqt的signal和slot
如果你是使用PyQT 4.5之後的版本,除了傳統的signal/slot的連接方式外,你還多了一種比較符合Python樣式的寫法。 這種寫法是透過下面兩種新的PyQT物件來達成
pyqtSignal
pyqtSlot
正如其名, pyqtSingal是用來定義signal,而pyqtSlot 則是用於slot。
首先,我們來了解如何利用pyqtSignal來制定一個signal。
qt的官方文檔中有說明,signal只能在QObject的子類中定義。如果在子類外直接定義,會出現 AttributeError: 'PyQt4.QtCore.pyqtSignal' object has no attribute 'emit'
且看下面的範例:
from PyQt4 import QtCore
class MyQObject(QtCore.QObject):
# 定義一個無參數的signal
signal1 = QtCore.pyqtSignal()
# 定義一個有一個整數參數的signal,並且name為qtSignal2。
signal2 = QtCore.pyqtSignal(int, name='qtSignal2')
def __init__(self):
super(MyQObject, self).__init__() #如果寫了__init__()函數,這一行一定要有,否則會出現TypeError: pyqtSignal must be bound to a QObject, not 'MyQObject'
def connectSigSlot(self):
# 利用pySignal物件本身提供的connect,我們可以輕易的將pySignal物件與對應的slot相連。
# 將signal1與myReceiver1連接起來。
self.signal1.connect(self.myReceiver1)
# 將signal2與myReceiver2連接起來。
self.signal2.connect(self.myReceiver2)
def myEmitter(self):
# 利用pyqtSignal物件所提供的emit function,我們就可以輕易的發出signal。
self.signal1.emit()
self.signal2.emit(10)
def myReceiver1(self):
print 'myReceiver1 called'
def myReceiver2(self, arg):
print 'myReceiver2 called with argument value %d' % arg
簡單的說,透過pyqtSignal,將signal也視為一種物件,所以signal所需的功能皆可由signal本身的method來定義。 所以整個signal的定義與使用完全符合物件導向的精神,程式看起來也更為直覺。
而pySlot則是一個Python的decorator,我們可以透過他來將一個method定義為slot。
@QtCore.pyqtSlot
()
def mySlot(self):
print 'mySlot received a signal')
@QtCore.pyqtSlot
(int)
def mySlot2(self, arg):
print 'mySlot2 received a signal with argument %d' % arg)
整個slot的定義與舊的方法相較,頓時變得簡單許多。如果,你的UI使透過pyuic4所製作出來的,那甚至可以透過
slot的名稱來指定要連結的元件與signal。舉例來說,如果你的UI中有一個名為myBtn的按鈕,想要連接他的clicked
signal。你只要在你繼承的視窗類別中,定義如下的slot:
@QtCore.pyqtSlot
(bool)
def on_myBtn_clicked(self, checked):
print 'myBtn clicked.'
PyQT會自動將這個slot與UI內的myBtn的clicked singal連接起來。真的是非常省事。
新的singal/slot的定義與使用方式是PyQT 4.5中的一大改革。可以讓PyQT程式更清楚易讀。如果你也是用PyQT 4.5以後的版本。 建議您開始使用這種新的方式吧。
㈣ python中setup.py和_init_.py的作用
你是否使用過java呢?我之前用java,最近趁工作比較閑,轉學了python一段時間。
java和python都有類似classpath(pythonpath)的一個概念,即程序查找路徑。java虛擬機或者python編譯器,會從這些路徑中查找你程序中所使用的包/模塊。
java的classpath有一個非常適合項目開發的特性,就是它的classpath包括了項目根目錄下的文件和jar包,這樣一個項目中使用其它依賴項,只要把這些jar文件放在程序根目錄下就可以了。另一方面自己項目中的代碼可以無障礙的互相引用。classpath還包含jre相關的一組路徑。
而python的pythonpath概念和java相似,它包含python安裝目錄相關的一組路徑(內置模塊和標准庫,以及其它第三方模塊的共享路徑),但是它不支持項目所在根目錄這種形式,而是只支持文件所在目錄的相對路徑。這樣說你可以能有一點暈,我用形象的方式來描述。假設python項目為以下結構:
src #項目跟路徑
A #包A
a.py
B #包B
b.py
src這個跟路徑默認是不在pythonpath中的,此時,如果在想在a.py中引用b.py的代碼,如果用
import B.b
是會提示無法找到B.b模塊的錯誤。原因是python解釋器執行a.py模塊代碼時,只能檢測a.py所在包A下的模塊以及A子目錄中的模塊,無法檢測到同一個項目中B包下的b.py模塊。這種情況非常不符合我們構建項目的思維習慣。
最簡單的解決方案是將src文件夾路徑添加到 PYTHONPATH,這樣這個項目里的所有代碼就可以通過包名互相訪問,這是setup.py所做的主要事情:將整個項目添加到pythonpath
可以認為,setup.py中所記錄的就是項目模塊添加到pythonpath的規則。
setup.py中會定義此項目中有哪些模塊需要被加入到pythonpath,在這個過程中可以把測試項目過濾掉;setup.py中會定義需要的第三方依賴,使用安裝命令可以同時安裝這些第三方依賴,等等。這樣安裝完成之後,本機的其它python項目,也能用到此項目的模塊。
這里有一個問題,就是不同項目里可能需要使用第三方模塊的不同版本,如果所有模塊都是安裝到pythonpath,就可能造成不同版本的沖突,因此python引入了virtualenv這個概念,為不同項目引入不同的PYTHONPATH進行隔離。
可以看一看PyBuilder項目,類似maven的聲明式依賴管理工具,一個語言想要工程化,方便的工程化管理工具必不可少。
㈤ python scrapy中怎麼加入自己寫的py
在使用python來處理數據時,經常需要使用到讀取文本和寫入文本的with
open,如果將這兩個語句寫入一個.py文件中,那麼每次需要讀取或者寫入文本時,只需要import就可以了。
上代碼:
import
codecs
#防止編碼問題#傳入的參數為path和code,path表示txt文件的絕對或相對路徑,code表示該txt的編碼,一般為utf-8無bom,兩個參數的數據類型都為str。def
readtxt(path,
code):
with
codecs.open(path,
'r',
encoding=code)as
f:
txt_lines
=
f.readlines()
return
txt_lines#傳入參數為path、content和code,path和code和上述相同,content即為寫入的內容,數據類型為字元串。def
writetxt(path,
content,
code):
with
codecs.open(path,
'a',
encoding=code)as
f:
f.write(content)
return
path+'
is
ok!'1234567891011121314
然後將其保存為.py文件,命名隨意,我這里命名為reader.py
然後新建一個文件夾,命名看心情,我這里命名myMole,將reader.py放到文件夾中,並將文件夾放到自己的某個路徑下。
復制剛剛myMole文件夾的路徑,包括myMole,我這里是D:,將其寫入到一個新的txt文件中保存,並將這個txt命名為myMole,後綴名改成.pth。
最後,將這個.pth文件放到python的安裝路徑→Lib→site-packages的文件夾下。
測試:
隨便新建個txt,寫入內容,編碼用notepad++轉為utf-8無bom。
然後打開windows
power
shell,輸入:
ipython
或者
python
進入ipython或python後,輸入:
成功獲取txt內的文本,並存入到一個list中返回。
*注意使用的時候還需要加入函數名字,傳入的參數需要和自己寫得函數順序以及類型保持一致。
㈥ python生成的py文件怎麼加密
使用任意加密演算法,或者按照隨機的密鑰進行錯亂擺放,即可起到加密的效果。這兩種方法都沒有破解方案
㈦ 如何在Python shell界面中執行編寫好的.py文件
可以使用os模塊的system命令
os.system('要執行的py文件路徑')
這樣就可以了,如果不可行,那就pyhton路徑 空格 然後py文件路徑就行
㈧ 求助一下,python如何調用另一個py文件
方案如下:
1.
將另一個py做成一個包,或者直接和調用文件放在同一個目錄下;
2.
在調用者文件頭引入:from
py名字
import
*;
3.
這樣就可以使用另一個py文件的所有函數了。
㈨ python如何新建py文件
常見的有三種方法:
(1)打開Python自帶的IDLE,新建文件(File--New File),輸入或不輸入代碼,保存.py即可;
(2)使用其它第三方IDE,新建Python File後自動在項目或者環境目錄下創建.py文件;
(3)直接新建一個任意格式空白文件,建好後修改後綴為.py;
㈩ python如何創建py文件
創建一個文本文檔(.txt),保存的時候將文件格式輸入.py,如圖:
相關推薦:《Python教程》
也可以在python環境下使用fwrite等語句進行編輯,或者使用自帶的IDLE編輯器編輯(右鍵選擇即可)
可下載notepad等編輯軟體,支持多種語言創建、編輯,在保存時選擇.py進行保存即可。