我刚刚读过修改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) 我需要通过运行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脚本检查程序是否存在?
比方说,你要检查wget或curl可用.我们假设他们应该走在路上.
看到多平台解决方案是最好的,但目前Linux已经足够了.
提示:
--version.此外,我会感谢一个更通用的解决方案,比如 is_tool(name)
我有一个名为的二进制文件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的输出,我不希望这样.
有人有建议吗?
我正在研究一个漂亮的小功能:
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 …
当用户发出安装原始软件的命令时,我想在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)
我想是一个命令,一个用户可以发出来安装原包,有点子找到要求的文件,然后安装依赖了.
我正在编写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) 我正在编写一个 python 程序,它生成可编译成 PDF 文档的 TeX 代码。为此,我需要确保用户的计算机上安装了某些 LaTeX 发行版。如何在 Python 2.7 中以独立于平台的方式执行此操作?
我想知道是否可以在 Windows 7 下找到具有标准 python 2.7 库的应用程序(例如 MS Excel)的安装目录。我的意思是,它不应该使用任何 pywin32 或 xlrd 等。
也许它会查找注册表来找到安装路径?
我正在创建一个使用与服务器交互的外部程序的脚本。我想在尝试使用该程序之前先测试该程序是否已安装。
我查找了判断程序是否已安装的首选方法,并找到了这篇文章: 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 安装了某些内容?
一些系统信息: