相关疑难解决方法(0)

如何轻松修复过去的提交?

我刚刚读过修改git过去提交中的单个文件,但不幸的是,接受的解决方案"重新排序"了提交,这不是我想要的.所以这是我的问题:

我偶尔会在处理(无关)功能时发现我的代码中存在错误.然后快速git blame揭示该错误已经被引入了一些提交之前(我提交了很多,所以通常它不是引入该错误的最新提交).此时,我通常这样做:

git stash                      # temporarily put my work aside
git rebase -i <bad_commit>~1   # rebase one step before the bad commit
                               # mark broken commit for editing
vim <affected_sources>         # fix the bug
git add <affected_sources>     # stage fixes
git commit -C <bad_commit>     # commit fixes using same log message as before
git rebase --continue          # base all later changes onto this
Run Code Online (Sandbox Code Playgroud)

然而,这种情况经常发生,上述序列变得烦人.特别是'互动式底板'很无聊.上面的序列是否有任何快捷方式,这可以让我修改过去的任意提交和分阶段的更改?我完全清楚这会改变历史,但我经常犯错误,所以我真的很喜欢这样的事情.

vim <affected_sources>             # fix bug
git add -p <affected_sources>      # Mark …
Run Code Online (Sandbox Code Playgroud)

git rewrite

100
推荐指数
8
解决办法
5万
查看次数

Python中的"哪个"等效函数

我需要通过运行which abc命令来设置环境.是否有Python等效的which命令功能?这是我的代码.

cmd = ["which","abc"]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
res = p.stdout.readlines()
if len(res) == 0: return False
return True
Run Code Online (Sandbox Code Playgroud)

python command which

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

检查python脚本中是否存在程序

如何从python脚本检查程序是否存在?

比方说,你要检查wgetcurl可用.我们假设他们应该走在路上.

看到多平台解决方案是最好的,但目前Linux已经足够了.

提示:

  • 运行命令并检查返回代码并不总是足够的,因为即使您尝试,某些工具也会返回非0结果--version.
  • 检查命令时,屏幕上看不到任何内容

此外,我会感谢一个更通用的解决方案,比如 is_tool(name)

python

49
推荐指数
7
解决办法
4万
查看次数

抑制Python调用可执行文件的输出

我有一个名为的二进制文件A,在调用时生成输出.如果我从Bash shell调用它,大多数输出​​都被抑制A > /dev/null.所有输出都被抑制A &> /dev/null

我有一个名为B需要调用的python脚本A.我希望能够从中生成输出B,同时抑制所有输出A.

从内B,我已经试过os.system('A'),os.system('A > /dev/null')os.system('A &> /dev/null'),os.execvp('...')等,但这些都不抑制所有来自A的输出

我可以跑B &> /dev/null,但这也抑制了所有B的输出,我不希望这样.

有人有建议吗?

python redirect

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

用Popen打开一个进程并获得PID

我正在研究一个漂亮的小功能:

def startProcess(name, path):
    """
    Starts a process in the background and writes a PID file

    returns integer: pid
    """

    # Check if the process is already running
    status, pid = processStatus(name)

    if status == RUNNING:
        raise AlreadyStartedError(pid)

    # Start process
    process = subprocess.Popen(path + ' > /dev/null 2> /dev/null &', shell=True)

    # Write PID file
    pidfilename = os.path.join(PIDPATH, name + '.pid')
    pidfile = open(pidfilename, 'w')
    pidfile.write(str(process.pid))
    pidfile.close()

    return process.pid
Run Code Online (Sandbox Code Playgroud)

问题是这process.pid不是正确的PID.它似乎总是比正确的PID低1.例如,它表示该过程始于31729,但ps表示它正在31730运行.每次我尝试将其关闭1.我猜它返回的PID是当前进程的PID ,而不是已启动的PID ,并且新进程获得的"下一个"pid高出1.如果是这种情况,我不能仅仅依靠返回,process.pid …

python subprocess popen

29
推荐指数
1
解决办法
7万
查看次数

Pip可以在安装时安装setup.py中未指定的依赖项吗?

当用户发出安装原始软件的命令时,我想在pit上安装我在GitHub上的依赖项,也可以从GitHub上的源代码安装.这些软件包都不在PyPi上(永远不会).

用户发出命令:

pip -e git+https://github.com/Lewisham/cvsanaly@develop#egg=cvsanaly
Run Code Online (Sandbox Code Playgroud)

这个repo有一个requirements.txt文件,另一个依赖于GitHub:

-e git+https://github.com/Lewisham/repositoryhandler#egg=repositoryhandler
Run Code Online (Sandbox Code Playgroud)

我想是一个命令,一个用户可以发出来安装原包,有点子找到要求的文件,然后安装依赖了.

python pip setuptools

21
推荐指数
2
解决办法
9723
查看次数

如何在Python中判断文件在Windows上是否可执行?

我正在编写grepath实用程序,找到%PATH%匹配模式的可执行文件.我需要定义路径中给定的文件名是否可执行(重点是命令行脚本).

基于"告诉文件是否可执行"我得到:

import os
from pywintypes import error
from win32api   import FindExecutable, GetLongPathName

def is_executable_win(path):
    try:
        _, executable = FindExecutable(path)
        ext = lambda p: os.path.splitext(p)[1].lower()
        if (ext(path) == ext(executable) # reject *.cmd~, *.bat~ cases
            and samefile(GetLongPathName(executable), path)):
            return True
        # path is a document with assoc. check whether it has extension
        # from %PATHEXT% 
        pathexts = os.environ.get('PATHEXT', '').split(os.pathsep)
        return any(ext(path) == e.lower() for e in pathexts)
    except error:
        return None # not an exe …
Run Code Online (Sandbox Code Playgroud)

c++ python windows winapi

7
推荐指数
1
解决办法
3654
查看次数

如何从 python 中检查计算机上是否安装了 LaTeX 和 TeX Live?

我正在编写一个 python 程序,它生成可编译成 PDF 文档的 TeX 代码。为此,我需要确保用户的计算机上安装了某些 LaTeX 发行版。如何在 Python 2.7 中以独立于平台的方式执行此操作?

python latex tex python-2.7

6
推荐指数
1
解决办法
2340
查看次数

有没有办法找到带有标准库的应用程序的路径?

我想知道是否可以在 Windows 7 下找到具有标准 python 2.7 库的应用程序(例如 MS Excel)的安装目录。我的意思是,它不应该使用任何 pywin32 或 xlrd 等。

也许它会查找注册表来找到安装路径?

python windows installation-path

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

如何在 Haskell 中判断 Linux 上是否安装了程序

我正在创建一个使用与服务器交互的外部程序的脚本。我想在尝试使用该程序之前先测试该程序是否已安装。

我查找了判断程序是否已安装的首选方法,并找到了这篇文章: How can I check if a program contains from a Bash script?

TLDR:它建议使用“command -v <prog-name>”而不是“which <prog-name>”,因为它是 POSIX 兼容的。如果找到程序,该命令应返回 0,否则返回 >0。

所以我从 System.Process 中使用readProcessWithExitCode如下

readProcessWithExitCode "command" ["-v", "<some-program>"] ""
Run Code Online (Sandbox Code Playgroud)

在 GHCI 中测试时出现以下错误

异常:命令:readCreateProcessWithExitCode:posix_spawnp:不存在(没有这样的文件或目录)

我尝试在“命令”上使用“which”。它告诉我它不存在,尽管我可以使用它,并且它的工作原理如我的终端中的手册页中所述。

这是怎么回事?我如何查看是否使用 Haskell 安装了某些内容?

一些系统信息:

  • GHC:9.0.2
  • 解析器:lts-19.11
  • “顺便说一句,我使用 Arch”

bash haskell posix

1
推荐指数
1
解决办法
329
查看次数