爲什麼os.path.isfile(os.path.abspath("adb.exe"))
返回false? 我有adb.exe腳本目錄與os.path.isfile(os.path.abspath("fastboot.exe"))
相同,但是當我將它們複製到我的python目錄,然後啓動交互式shell,例如。 os.path.isfile(os.path.abspath("adb.exe"))
給我真實。 或者有更好的方法來驗證腳本目錄中是否存在文件。os.path.isfile(os.path.abspath(「adb.exe」))返回false
回答
原因os.path.isfile(os.path.abspath("adb.exe"))
回報False
是因爲當你運行該腳本,蟒蛇實際上是從它的安裝目錄中運行,不腳本位置。
如果你想獲得當前文件夾路徑,您可以使用:
os.path.dirname(os.path.abspath(__file__))
或@blakev建議:
os.path.split(__file__)[0]
因此,你可以檢查文件中使用這些腳本的位置存在:
os.path.isfile(os.path.dirname(os.path.abspath(__file__)) + os.sep + filename)
注:
os.sep
包含您的操作系統文件系統使用的相應分隔符,因此在Windows系統上使用\
。
__file__
只有在運行腳本文件時才存在,它不會在命令行中運行python。它返回腳本的完整路徑和名稱。舉個例子,我的桌面上運行的腳本調用script.py它可能會返回C:\Users\Nick A\Desktop\script.py
我是新手,所以請告訴我_ _file_ _是什麼意思 –
@Szymon'__file__'是正在運行的腳本的位置,包括文件名,例如,在您的桌面上,它可以評估爲Windows系統上的「C:\ Users \ Szymon R \ Desktop \ script.py」 –
要澄清,python.exe可以與任何工作目錄一起運行。它要麼由父進程顯式地設置,要麼從父進程隱式地繼承。假設python.exe或py.exe與Python腳本相關聯,那麼當您雙擊.py腳本時,通常Explorer會將工作目錄設置爲腳本目錄來運行Python,但沒有腳本應該依賴於該腳本。 – eryksun
- 1. 爲什麼os.path.isfile返回False?
- 2. Python`os.path.isfile()`總是返回TRUE
- 3. os.path.isfile()對網絡驅動器上的文件返回false
- 4. 對於現有的Windows文件,os.path.isfile()返回false
- 5. os.path.isfile(file_path)當file_path是相對路徑時返回false,爲什麼?
- 6. File.delete()返回false
- 7. openssl_x509_parse返回false
- 8. SQL返回false
- 9. decimal.TryParse返回false
- 10. Golang:reflect.DeepEqual返回false
- 11. get_browser()返回FALSE
- 12. is_writable()返回false
- 13. ResultSet.next()返回false
- 14. move_uploaded_file()返回false
- 15. PHP:sqlsrv_fetch_array()返回false
- 16. Request.IsAjaxRequest返回false
- 17. System.IO.File.Exists()返回false
- 18. setlocale()返回false
- 19. file_exists()返回FALSE
- 20. File.canRead()返回false
- 21. SCDynamicStoreSetValue返回false
- 22. cursor.moveToFirst()返回false
- 23. ForceDirectories返回False
- 24. openssl_dh_compute_key返回false
- 25. R.id返回false
- 26. winusb_initialize返回false
- 27. query.next()返回false
- 28. GetVolumeNameForVolumeMountPoint返回false
- 29. setProperty()返回false
- 30. json_encode()返回false
因爲Python實際上是從Python的目錄上運行,而不是腳本位置 –
你可以使用'拿到劇本的目錄目錄,文件路徑= OS .path.split(__ file __)' – blakev
但問題是這些文件可能位於其他目錄中。在我的電腦是c:\ adb.exe和onther pc這可能是c:\ scripts \ python \ adb.exe –