我有一些Python代码通过一个字符串列表运行,如果可能的话将它们转换为整数或浮点数.对整数执行此操作非常简单
if element.isdigit():
newelement = int(element)
Run Code Online (Sandbox Code Playgroud)
浮点数更难.现在我正在使用partition('.')
拆分字符串并检查以确保一侧或两侧是数字.
partition = element.partition('.')
if (partition[0].isdigit() and partition[1] == '.' and partition[2].isdigit())
or (partition[0] == '' and partition[1] == '.' and partition[2].isdigit())
or (partition[0].isdigit() and partition[1] == '.' and partition[2] == ''):
newelement = float(element)
Run Code Online (Sandbox Code Playgroud)
这是有效的,但显然if语句有点像熊.我考虑的另一个解决方案是将转换包装在try/catch块中,看看它是否成功,如本问题所述.
有没有其他想法?关于分区和try/catch方法的相对优点的意见?
我知道我曾经知道如何做到这一点,但是...如何在unix上登录时运行脚本(bash可以)?
我正在使用grep生成我需要移动的文件列表:
grep -L -r 'Subject: \[SPAM\]' .
Run Code Online (Sandbox Code Playgroud)
如何将此列表传递给mv命令并将文件移动到其他位置?
这是我在SO的第一个问题.
我有一个我公司的内部申请,我最近要求维护.这些应用程序是用PHP构建的,它的编码相当好(OO,DB Abstraction,Smarty),没有WTF-ish.
问题是应用程序非常慢.
我如何找出减缓应用程序速度的因素?我已经优化了代码,只进行了很少的数据库查询,所以我知道这是需要一段时间才能执行的PHP代码.我需要一些可以帮助我的工具,并且需要设计一个检查我的代码的策略.
我可以自己做检查/策略工作,但我需要更多的PHP工具来弄清楚我的应用程序在哪里.
思考?
我不得不多次这样做,通常是在尝试查找使用变量或函数的文件时.
我记得过去使用xargs和grep这样做,但我想知道是否有更简单的方法.
GNU sed版本4.1.5似乎与国际字符失败.这是我的输入文件:
Gras Och Stenar Trad - 从Moja到Minneapolis DVD [G2007DVD] 7812 | X
Gras Och Stenar Trad - 从Möja到明尼阿波利斯DVD [G2007DVD] 7812 | ÿ
(注意第二行的变音符号.)
而当我这样做
sed的/.*| //'<in
我希望只看到X和Y,因为我要求删除所有字符到'|' 超越它的空间.相反,我得到:
X
Gras Och Stenar Trad - 来自M?ÿ
我知道我可以使用tr删除国际字符.首先,但有没有办法只使用sed?
我希望能够配置这样的东西.
从命令行启动的运行C或C++程序的最佳方法是将其置于后台,相当于用户是否从命令末尾的'&'启动了unix shell?(但用户没有.)这是一个GUI应用程序,不需要任何shell I/O,因此没有理由在启动后绑定shell.但是我希望shell命令启动在没有'&'(或Windows)的情况下自动后台运行.
理想情况下,我想要一个适用于Linux,OS X和Windows的解决方案.(或者我可以用#ifdef选择单独的解决方案.)可以假设这应该在执行开始时完成,而不是在中间的某个地方.
一种解决方案是让主程序成为启动真实二进制文件的脚本,小心地将其放入后台.但是需要这些耦合的shell /二进制对似乎并不令人满意.
另一个解决方案是立即启动另一个执行版本(带有'system'或CreateProcess),使用相同的命令行参数,但将子项放在后台然后让父出口.但与将自身置于背景中的过程相比,这似乎很笨拙.
在几个答案之后编辑:是的,fork()(或系统()或Windows上的CreateProcess)是一种解决这个问题的方法,我在原始问题中暗示过.但是所有这些解决方案都使得SECOND流程成为背景,然后终止原始流程.我想知道是否有办法将现有流程放入后台.一个区别是,如果应用程序是从记录其进程ID的脚本启动的(可能是为了以后的查杀或其他目的),新分叉或创建的进程将具有不同的ID,因此任何启动脚本都无法控制,如果你看到我得到了什么.
编辑#2:
fork()不是OS X的好解决方案,其中'fork'的手册页说如果使用某些框架或库则它是不安全的.我试过了,我的应用程序在运行时大声抱怨:"进程已分叉,你不能安全地使用这个CoreFoundation功能.你必须执行()."
我对daemon()感兴趣,但是当我在OS X上尝试它时,它给出了相同的错误消息,所以我认为它只是fork()的一个花哨的包装器并且具有相同的限制.
请原谅OS X中心主义,它恰好是我眼前的系统.但我确实在寻找所有三个平台的解决方案.
我正在使用sh将一些Windows批处理文件转换为Unix脚本.我有问题,因为某些行为取决于批处理文件中可用的%~dp0宏.
有没有相当于这个?有没有办法获得执行脚本所在的目录?
我想要做的是将文件中的设置包含到我当前的交互式bash shell中,如下所示:
$./path/to/some/dir/.settings
问题是.settings脚本还需要使用".".运算符包含其他文件,如下所示:
..extra_settings
如何在.settings文件中引用.extra_settings的相对路径?这两个文件始终存储在同一目录中,但此目录的路径将根据这些文件的安装位置而有所不同.
操作员总是知道/ path/to/some/dir /,如上所示..settings文件如何知道安装它的目录?我宁愿没有一个记录已安装目录名称的安装过程.