最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Python執(zhí)行py文件是否需要可執(zhí)行權(quán)限

 更新時(shí)間:2023年03月13日 14:59:37   作者:DECHIN  
這篇文章主要通過幾個(gè)案例為大家詳細(xì)介紹一下在Python中執(zhí)行py文件是否需要可執(zhí)行權(quán)限,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以了解一下

案例解析

這個(gè)問題描述起來有點(diǎn)違反直覺,要執(zhí)行一個(gè)文件難道不應(yīng)該需要可執(zhí)行權(quán)限嗎?讓我們先來看一個(gè)例子:

# module1.py
def test():
    print ('hello world!')
 
if __name__ == '__main__':
    test()

這是一個(gè)名為module1.py的文件,這個(gè)文件僅有可讀權(quán)限:

[dechin@dechin-manjaro excute]$ ll
-r--r--r-- 1 dechin dechin   78  1月 15 17:06 module1.py

我們可以直接用python來運(yùn)行一下這個(gè)文件:

[dechin@dechin-manjaro excute]$ python3 module1.py 
hello world!

我們發(fā)現(xiàn)即使只有可讀權(quán)限,這個(gè)文件也是可以運(yùn)行的。為了嚴(yán)格驗(yàn)證,我們這里創(chuàng)建另外一種模式的測(cè)試,通過import來導(dǎo)入python文件,是否也不需要可執(zhí)行權(quán)限呢?

# module2.py
from module1 import test
 
if __name__ == '__main__':
    test()

同樣的,我們新建的文件也未賦予可執(zhí)行權(quán)限:

[dechin@dechin-manjaro excute]$ ll
-r--r--r-- 1 dechin dechin   78  1月 15 17:06 module1.py
-r--r--r-- 1 dechin dechin   64  1月 15 17:44 module2.py

我們執(zhí)行一下module2.py這個(gè)文件:

[dechin@dechin-manjaro excute]$ python3 module2.py 
hello world!

那么我們的測(cè)試就完成了,經(jīng)過驗(yàn)證,執(zhí)行普通的py文件是不需要可執(zhí)行權(quán)限的,這對(duì)我們的權(quán)限最小化約束就產(chǎn)生了一定的啟發(fā)作用。

原理解釋

在stackoverrun上面有一條回復(fù),作者cedbeu是這樣描述的:python本身承擔(dān)了語言解析器的角色,py文件不過是一個(gè)文本文件,真正執(zhí)行的二進(jìn)制文件是python而不是用戶所創(chuàng)建的py文件。因此,即使去掉py文件的可執(zhí)行權(quán)限,該py文件也是可以通過python來執(zhí)行的。但是,如果我們?nèi)サ袅藀ython的可執(zhí)行權(quán)限,那就無法正常執(zhí)行這一條任務(wù)了。

擴(kuò)展測(cè)試

如果將py文件編譯成pyc和pyo格式的文件,此時(shí)的任務(wù)執(zhí)行是否需要可執(zhí)行權(quán)限呢?首先測(cè)試pyc文件:

[dechin@dechin-manjaro excute]$ python3 -m py_compile module1.py

執(zhí)行完編譯,我們會(huì)在當(dāng)前目錄下發(fā)現(xiàn)一個(gè)__pycache__的文件夾,編譯好的pyc文件就存儲(chǔ)在這個(gè)目錄下:

[dechin@dechin-manjaro excute]$ tree
.
├── module1.py
├── module2.py
└── __pycache__
    └── module1.cpython-38.pyc
 
1 directory, 3 files
[dechin@dechin-manjaro excute]$ cd __pycache__/
[dechin@dechin-manjaro __pycache__]$ ll
總用量 4
-rw-r--r-- 1 dechin dechin 259  1月 15 18:01 module1.cpython-38.pyc

這里我們看到pyc文件的文件名會(huì)固定有個(gè)后綴,同樣也沒有可執(zhí)行權(quán)限,這里我們用同樣的命令來執(zhí)行pyc文件:

[dechin@dechin-manjaro __pycache__]$ ll
-r--r--r-- 1 dechin dechin 259  1月 15 18:01 module1.cpython-38.pyc
-rw-r--r-- 1 dechin dechin 259  1月 15 18:13 module1.pyc
-r--r--r-- 1 dechin dechin  64  1月 15 18:09 module2.py
[dechin@dechin-manjaro __pycache__]$ python3 module1.cpython-38.pyc 
hello world!
[dechin@dechin-manjaro __pycache__]$ python3 module2.py 
hello world!

這里我們可以發(fā)現(xiàn),不論是直接執(zhí)行pyc文件,或者是改名為module1.pyc之后再通過module2.py導(dǎo)入的方式,都可以正常的被執(zhí)行,而且都不具有可執(zhí)行權(quán)限。接下來我們?cè)賴L試一下pyo文件:

[dechin@dechin-manjaro excute]$ python3 -O -m py_compile module1.py 

執(zhí)行帶有opt的pyc文件:

[dechin@dechin-manjaro __pycache__]$ python3 module1.cpython-38.opt-1.pyc 
hello world!

同樣的,都可以正常的被執(zhí)行,即使沒有可執(zhí)行權(quán)限。

技術(shù)彩蛋

即使我們把pyc文件強(qiáng)行改名為py文件,同樣也是不影響任務(wù)執(zhí)行的:

[dechin@dechin-manjaro __pycache__]$ cp module1.cpython-38.opt-1.pyc module1.py
[dechin@dechin-manjaro __pycache__]$ ll
總用量 20
-rw-r--r-- 1 dechin dechin 259  1月 15 18:17 module1.cpython-38.opt-1.pyc
-r--r--r-- 1 dechin dechin 259  1月 15 18:01 module1.cpython-38.pyc
-rw-r--r-- 1 dechin dechin 259  1月 15 18:20 module1.py
-rw-r--r-- 1 dechin dechin 259  1月 15 18:13 module1.pyc
-r--r--r-- 1 dechin dechin  64  1月 15 18:09 module2.py
[dechin@dechin-manjaro __pycache__]$ python3 module1.py
hello world!

到此這篇關(guān)于詳解Python執(zhí)行py文件是否需要可執(zhí)行權(quán)限的文章就介紹到這了,更多相關(guān)Python執(zhí)行py文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中裝飾器和魔法方法的區(qū)別解析

    Python中裝飾器和魔法方法的區(qū)別解析

    在Python中,裝飾器(Decorators)和魔法方法(Magic Methods)是兩種不同的高級(jí)特性,分別服務(wù)于不同的目的,這篇文章主要介紹了Python中裝飾器和魔法方法的區(qū)別,需要的朋友可以參考下
    2024-03-03
  • Python基礎(chǔ)知識(shí)之推導(dǎo)式詳解

    Python基礎(chǔ)知識(shí)之推導(dǎo)式詳解

    這篇文章主要介紹了Python基礎(chǔ)知識(shí)之推導(dǎo)式詳解,Python推導(dǎo)式是一種簡(jiǎn)潔高效的代碼編寫方式,可以用一行代碼來創(chuàng)建列表、集合、字典等復(fù)雜數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下
    2023-07-07
  • Python中的Joblib庫使用學(xué)習(xí)總結(jié)

    Python中的Joblib庫使用學(xué)習(xí)總結(jié)

    這篇文章主要介紹了Python中的Joblib庫使用學(xué)習(xí)總結(jié),Joblib是一組在Python中提供輕量級(jí)流水線的工具,Joblib已被優(yōu)化得很快速,很健壯了,特別是在大數(shù)據(jù)上,并對(duì)numpy數(shù)組進(jìn)行了特定的優(yōu)化,需要的朋友可以參考下
    2023-08-08
  • tensorflow dataset.shuffle、dataset.batch、dataset.repeat順序區(qū)別詳解

    tensorflow dataset.shuffle、dataset.batch、dataset.repeat順序區(qū)別詳

    這篇文章主要介紹了tensorflow dataset.shuffle、dataset.batch、dataset.repeat順序區(qū)別詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2020-06-06
  • django虛擬環(huán)境(virtualenv)的創(chuàng)建

    django虛擬環(huán)境(virtualenv)的創(chuàng)建

    在使用django開發(fā)項(xiàng)目的時(shí)候,一個(gè)環(huán)境只能對(duì)應(yīng)一個(gè)項(xiàng)目,若不安裝虛擬環(huán)境、都裝在系統(tǒng)里面,每次項(xiàng)目加載都需要加載所有的安裝包,本文就介紹django虛擬環(huán)境的安裝,感興趣的可以了解一下
    2021-08-08
  • 淺談Python中對(duì)象是如何被調(diào)用的

    淺談Python中對(duì)象是如何被調(diào)用的

    本文主要介紹了淺談Python中對(duì)象是如何被調(diào)用的,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • python pyecharts 實(shí)現(xiàn)一個(gè)文件繪制多張圖

    python pyecharts 實(shí)現(xiàn)一個(gè)文件繪制多張圖

    這篇文章主要介紹了python pyecharts 實(shí)現(xiàn)一個(gè)文件繪制多張圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 詳解如何使用Python實(shí)現(xiàn)過濾指定進(jìn)程

    詳解如何使用Python實(shí)現(xiàn)過濾指定進(jìn)程

    Python提供了多種方式來實(shí)現(xiàn)對(duì)進(jìn)程的過濾和操作,本文將介紹如何利用Python來過濾指定進(jìn)程,并展示一些實(shí)用的技巧和方法,希望對(duì)大家有所幫助
    2024-04-04
  • 詳解Python網(wǎng)絡(luò)爬蟲功能的基本寫法

    詳解Python網(wǎng)絡(luò)爬蟲功能的基本寫法

    這篇文章主要介紹了Python網(wǎng)絡(luò)爬蟲功能的基本寫法,網(wǎng)絡(luò)爬蟲,即Web Spider,是一個(gè)很形象的名字。把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來爬去的蜘蛛,對(duì)網(wǎng)絡(luò)爬蟲感興趣的朋友可以參考本文
    2016-01-01
  • Python 爬蟲圖片簡(jiǎn)單實(shí)現(xiàn)

    Python 爬蟲圖片簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了Python 爬蟲圖片簡(jiǎn)單實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06

最新評(píng)論

涟水县| 西贡区| 东安县| 潼关县| 阿瓦提县| 波密县| 奉贤区| 凤庆县| 舒城县| 东城区| 长子县| 佳木斯市| 平安县| 保德县| 阿城市| 滦南县| 陵水| 广饶县| 浑源县| 大石桥市| 水城县| 册亨县| 贵港市| 保康县| 调兵山市| 互助| 治县。| 永定县| 鹿泉市| 库尔勒市| 兴海县| 乐至县| 武安市| 四川省| 孙吴县| 昔阳县| 西吉县| 东丰县| 重庆市| 崇明县| 肥东县|