我想获取当前文件的目录路径.
我试过了:
>>> os.path.abspath(__file__)
'C:\\python27\\test.py'
Run Code Online (Sandbox Code Playgroud)
但是如何检索目录的路径?例如:
'C:\\python27\\'
Run Code Online (Sandbox Code Playgroud) 我有脚本调用其他脚本文件,但我需要获取当前在该进程中运行的文件的文件路径.
例如,假设我有三个文件.使用execfile:
script_1.py电话script_2.py.script_2.py打电话script_3.py.我怎样才能获得的文件名和路径script_3.py,从内部代码script_3.py,而无需从传递这些信息作为参数script_2.py?
(执行os.getcwd()返回原始起始脚本的文件路径而不是当前文件的.)
我想看看在python中确定当前脚本目录的最佳方法是什么?
我发现,由于调用python代码的方法很多,很难找到一个好的解决方案.
这是一些问题:
__file__如果脚本执行时未定义exec,execfile__module__ 仅在模块中定义用例:
./myfile.pypython myfile.py./somedir/myfile.pypython somedir/myfile.pyexecfile('myfile.py') (来自另一个脚本,可以位于另一个目录中,并且可以有另一个当前目录.我知道没有完美的解决方案,但我正在寻找解决大多数情况的最佳方法.
最常用的方法是os.path.dirname(os.path.abspath(__file__)),如果你从另一个脚本执行脚本,这实际上不起作用exec().
任何使用当前目录的解决方案都将失败,根据调用脚本的方式或者可以在运行的脚本中更改它,可能会有所不同.
我在Windows 7上使用Python 3.2.当我打开Python shell时,我如何知道当前目录是什么以及如何将其更改为我的模块所在的另一个目录?
这似乎是一个新手问题,但事实并非如此.一些常见的方法并不适用于所有情况:
这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0])),但如果您从另一个目录中的另一个Python脚本运行,这不起作用,这可能发生在现实生活中.
这意味着使用path = os.path.abspath(os.path.dirname(__file__)),但我发现这不起作用:
py2exe没有__file__属性,但有一个解决方法execute()没有__file__属性NameError: global name '__file__' is not defined回答不完整的相关问题:
我正在寻找一个通用的解决方案,一个适用于所有上述用例的解决方案.
这是测试用例的结果:
a.py: __file__= a.py
a.py: os.getcwd()= C:\zzz
b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz
Run Code Online (Sandbox Code Playgroud)
#! /usr/bin/env python
import os, sys
print "a.py: sys.argv[0]=", sys.argv[0]
print "a.py: __file__=", __file__
print …Run Code Online (Sandbox Code Playgroud) 我写了一个专门的HTML解析器,我想用我下载的几个示例网页进行单元测试.
在Java中,我使用了类资源,将数据加载到单元测试中,而不必依赖它们在文件系统的特定路径上.有没有办法在Python中执行此操作?
我找到了doctest.testfile()函数,但这似乎是doctests特有的.我想获得一个特定HTML文件的文件句柄,该文件与当前模块相关.
在此先感谢您的任何建议!
我知道我可以使用它来获取完整的文件路径
os.path.dirname(os.path.realpath(__file__))
Run Code Online (Sandbox Code Playgroud)
但是我只想要文件夹的名称,我的脚本就在.如果我有my_script.py并且它位于
/home/user/test/my_script.py
Run Code Online (Sandbox Code Playgroud)
我想回"测试"我怎么能这样做?
谢谢
所以,我正在学习Python,并希望创建一个简单的脚本来从Internet下载文件,然后将其写入文件.但是,我使用IDLE并且不知道IDLE中的工作目录是什么或者如何更改它.如果我不知道工作目录或如何更改它,如何在IDLE中执行文件系统操作?
是否有获取笔记本路径的功能?
我在谷歌上搜索了一些关于这个主题但没有找到一个简单的方法来做到这一点......我想获得笔记本的路径,以便我可以在其他地方使用它。这样我就可以在与笔记本相同的路径中保存/使用文件,而不必担心它被保存在哪里。
现在我的解决方案是将以下代码放在最上面,但显然这至少会带来必须手动执行单元格的问题,而且如果工作目录发生更改,这将停止工作。
import os
current_path = os.getcwd()
Run Code Online (Sandbox Code Playgroud) 我必须从网页下载大量文档.它们是wmv文件,PDF,BMP等.当然,它们都有链接.所以每次我都要给RMC一个文件,选择'Save Link As'然后保存为Type All Files.是否可以在Python中执行此操作?我搜索了SO DB,人们回答了如何从网页上获取链接的问题.我想下载实际的文件.提前致谢.(这不是一个硬件问题:)).
设置
我在我的计算机上运行一个脚本,位于目录Users/path/to/my/script.py.
在脚本中,我使用脚本的路径,例如,
sub_path = 'Users/path/to/my/'
os.chdir(sub_path + 'other_script/')
Run Code Online (Sandbox Code Playgroud)
如您所见,我sub_path在代码中“手动”进行了定义。
问题
我不想sub_path手动定义,我宁愿让 Python 为我做。
我正在寻找类似于我用来获取当前工作目录的代码的东西:os.getcwd(),但是然后是获取当前文件目录的代码。
我主要找到类似于这个的答案,它说,
os.path.abspath(os.path.dirname(__file__))
但在 Spyder & Anaconda 设置中,这会生成NameError: name '__file__' is not defined.
我能做什么?
python ×12
directory ×2
file ×2
anaconda ×1
dirname ×1
file-io ×1
getcwd ×1
jupyter ×1
path ×1
python-3.2 ×1
python-3.x ×1
python-idle ×1
python-os ×1
pythonpath ×1
scripting ×1
spyder ×1
unit-testing ×1
windows ×1