相关疑难解决方法(0)

我如何递归grep?

我如何递归grep所有目录和子目录?

find . | xargs grep "texthere" *
Run Code Online (Sandbox Code Playgroud)

unix linux grep

1619
推荐指数
18
解决办法
148万
查看次数

如何获取当前正在执行的文件的路径和名称?

我有脚本调用其他脚本文件,但我需要获取当前在该进程中运行的文件的文件路径.

例如,假设我有三个文件.使用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 scripting file

462
推荐指数
16
解决办法
51万
查看次数

Python中的相对路径

我正在构建一个简单的帮助脚本,用于将代码库中的几个模板文件复制到当前目录.但是,我没有存储模板的目录的绝对路径.我确实有一个来自脚本的相对路径,但是当我调用脚本时,它将其视为相对于当前工作目录的路径.有没有办法指定这个相对url来自脚本的位置?

python path relative-path

204
推荐指数
9
解决办法
34万
查看次数

如何在与Python脚本相同的目录中可靠地打开文件

我曾经只是使用像这样的命令打开与当前运行的Python脚本位于同一目录中的文件

open("Some file.txt", "r")
Run Code Online (Sandbox Code Playgroud)

但是,我发现当脚本在Windows中通过双击运行时,它会尝试从错误的目录中打开该文件.

从那以后我使用了表格的命令

open(os.path.join(sys.path[0], "Some file.txt"), "r")
Run Code Online (Sandbox Code Playgroud)

每当我想打开一个文件.这适用于我的特定用法,但我不确定是否sys.path[0]可能在其他一些用例中失败.

所以我的问题是:打开与当前运行的Python脚本位于同一目录中的文件的最佳和最可靠的方法是什么?

这是我到目前为止能够弄清楚的:

  • os.getcwd()os.path.abspath('')返回"当前工作目录",而不是脚本目录.

  • os.path.dirname(sys.argv[0])os.path.dirname(__file__)返回用于调用脚本的路径,该路径可能是相对的,甚至是空白的(如果脚本在cwd中).此外,__file__当脚本在IDLE或PythonWin中运行时不存在.

  • sys.path[0]并且os.path.abspath(os.path.dirname(sys.argv[0]))似乎返回脚本目录.我不确定这两者之间是否有任何区别.

编辑:

我刚刚意识到我想做的事情会更好地描述为"在与包含模块相同的目录中打开一个文件".换句话说,如果我导入了一个我在另一个目录中编写的模块,并且该模块打开了一个文件,我希望它在模块的目录中查找该文件.我认为我发现的任何东西都不能做到这一点......

python directory

138
推荐指数
4
解决办法
12万
查看次数

Python open()给出IOError:Errno 2没有这样的文件或目录

出于某种原因,我的代码无法打开一个简单的文件:

这是代码:

file1 = open('recentlyUpdated.yaml')
Run Code Online (Sandbox Code Playgroud)

错误是:

IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
Run Code Online (Sandbox Code Playgroud)
  • 当然,我检查了这是文件的正确名称.
  • 我试过移动文件,给出文件open()的完整路径,似乎没有任何工作.

python file-io file filenotfoundexception file-not-found

56
推荐指数
3
解决办法
30万
查看次数

从其他目录运行EXE?

经过一段谷歌搜索并在这里搜索,找不到这个愚蠢问题的答案!

对于像这样的结构......

dirZero
|---dirOne
|---|---myProgram.exe
Run Code Online (Sandbox Code Playgroud)

如果我当前的目录是dirZero,如何运行"myProgram"?IE浏览器,

C:\dirZero> dirOne/myProgram.exe
Run Code Online (Sandbox Code Playgroud)

......显然不起作用.提前致谢.

cmd

52
推荐指数
2
解决办法
7万
查看次数

在python项目中使用相对路径读取文件

假设我有一个python项目,结构如下:

project
    /data
        test.csv
    /package
        __init__.py
        module.py
    main.py
Run Code Online (Sandbox Code Playgroud)

__init__.py:

from .module import test
Run Code Online (Sandbox Code Playgroud)

module.py:

import csv

with open("..data/test.csv") as f:
    test = [line for line in csv.reader(f)]
Run Code Online (Sandbox Code Playgroud)

main.py:

import package

print(package.test)
Run Code Online (Sandbox Code Playgroud)

当我运行时,main.py我收到以下错误:

 C:\Users\Patrick\Desktop\project>python main.py
Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import package
  File "C:\Users\Patrick\Desktop\project\package\__init__.py", line 1, in <module>
    from .module import test
  File "C:\Users\Patrick\Desktop\project\package\module.py", line 3, in <module>
    with open("../data/test.csv") as f:
FileNotFoundError: [Errno 2] No such file or directory: …
Run Code Online (Sandbox Code Playgroud)

python io relative-path python-import python-3.x

45
推荐指数
3
解决办法
7万
查看次数

Shell脚本当前目录?

什么是shell脚本的当前目录?我这个目前的目录,我打电话给它?或者脚本所在的这个目录?

linux directory working-directory sh

44
推荐指数
5
解决办法
9万
查看次数

从脚本导入已安装的包会引发"AttributeError:module has no attribute"或"ImportError:无法导入名称"

我有一个名为的脚本requests.py导入请求包.该脚本无法访问包中的属性,也无法导入它们.为什么这不起作用,我该如何解决?

以下代码提出了一个问题AttributeError.

import requests

res = requests.get('http://www.google.ca')
print(res)
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
  File "/Users/me/dev/rough/requests.py", line 1, in <module>
    import requests
  File "/Users/me/dev/rough/requests.py", line 3, in <module>
    requests.get('http://www.google.ca')
AttributeError: module 'requests' has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)

以下代码提出了一个问题ImportError.

from requests import get

res = get('http://www.google.ca')
print(res)
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
  File "requests.py", line 1, in <module>
    from requests import get
  File "/Users/me/dev/rough/requests.py", line 1, in <module>
    from requests import get
ImportError: cannot import name 'get' …
Run Code Online (Sandbox Code Playgroud)

python exception python-module shadowing

43
推荐指数
2
解决办法
1万
查看次数

os.getcwd()vs os.path.abspath(os.path.dirname(__ file__))

我使用os模块在我的Django项目settings.py文件中有相对路径.变量SITE_ROOT设置为文件的当前工作目录,settings.py然后用于引用static/media同一目录中的所有目录.

继承人我的问题:

print os.getcwd()
print os.path.abspath(os.path.dirname(__file__))
Run Code Online (Sandbox Code Playgroud)

在settings.py中,上述语句都具有相同的输出.但我的模板只会在我使用时加载SITE_ROOT = os.path.abspath(os.path.dirname(__file__))

Django在这里寻找模板:

TEMPLATE_DIRS = (
    os.path.join(SITE_ROOT, 'templates'),
)
Run Code Online (Sandbox Code Playgroud)

SITE_ROOT设置os.getcwd()似乎让Django的查找模板文件夹的目录上面的settings.py文件

我可以很容易地不使用os.getcwd(),我的网站运行良好,但我很好奇这里可能会发生什么:)

谁知道?

python django

41
推荐指数
2
解决办法
3万
查看次数