我有字符串(来自DB),它可能包含数值.如果它包含数值,我想删除尾随零,例如:
10.000010.234000str.replaceAll("\\.0*$", "")适用于第一个,但不适用于第二个.
很多答案指向使用BigDecimal,但String我得到的可能不是数字.所以我认为更好的解决方案可能是通过正则表达式.
我有一个表,T1,在SQL Server 2008上有一个XML列,EventXML.我想查询某些节点包含特定值的所有行.更好,我想在不同的节点中检索值.表T1:
T1:
EventID, int
EventTime, datetime
EventXML, XML
Run Code Online (Sandbox Code Playgroud)
这是一个示例XML层次结构:
<Event>
<Indicator>
<Name>GDP</Name>
</Indicator>
<Announcement>
<Value>2.0</Value>
<Date>2012-01-01</Date>
</Announcement>
</Event>
Run Code Online (Sandbox Code Playgroud)
我有一些解析csv文件的python代码.现在我们的供应商决定将数据文件更改为gzip csv文件.我想知道我必须做出的最小/最干净的代码更改是什么.当前功能:
def load_data(fname, cols=()):
... ...
with open(fname) as f:
reader = csv.DictReader(f)
... ...
Run Code Online (Sandbox Code Playgroud)
我不想将代码复制到load_data2(),并将with语句更改为,认为它完美无缺.
with gzip.open(fname) as f:
Run Code Online (Sandbox Code Playgroud)
如何分析with语句?
def load_data(fname, cols=()):
... ...
if fname.endswith('.csv.gz'):
with gzip.open(fname) as f:
else:
with open(fname) as f:
reader = csv.DictReader(f)
... ... # code to parse
Run Code Online (Sandbox Code Playgroud) 我的Python脚本在shell中运行良好.然而,当我cron它(在我自己的帐户下)它给我以下错误:
/ usr/local/bin/python:加载共享库时出错:libpython2.7.so.1.0:无法打开共享对象文件:没有这样的文件或目录
脚本的第一行有:
#!/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)
我知道我的〜/ .bashrc文件中有以下行,这解释了它在shell中的作用
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
Run Code Online (Sandbox Code Playgroud)
如果我使用以下内容它也可以使用它,但它看起来很难看,我讨厌申请每个cron工作.
00 * * * 1-5 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib && /path/somejob.py
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?我知道曾经有过的Python安装一些共享NFS路径上的早期版本我们的管理,并且提到不需要任何系统级别的配置变化在这里.我们的旧Python脚本只是将这一行作为第一行没有显式设置LD_LIBRARY_PATH.
#!/nfs/apps/python/bin/python
Run Code Online (Sandbox Code Playgroud)
在旧的nfs安装中
/nfs/apps/python/
-- bin
-- lib
-- share
-- include
Run Code Online (Sandbox Code Playgroud)
当前的Python是2.7.3,安装如下:(Linux CentOS 6)
./configure --prefix=/usr/local --enable-shared --with-system-expat --with-system-ffi
make
make install
Run Code Online (Sandbox Code Playgroud)
更新:
正如ansh0I建议的那样,将LD_LIBRARY_PATH添加到cronab的顶部可以正常工作!
python抱怨共享库的原因是它与--enable-shared一起安装.因此,python二进制文件要小得多,在/usr/local/lib/libpython2.7.so中共享了许多真正的解释器代码.然后你需要通过设置LD_LIBRARY_PATH告诉python在哪里找到共享库.如果在没有--enable-shared的情况下安装了python ,那么二进制文件本身要大得多,并且您不需要指定任何LD_LIBRARY_PATH
我有一个文件:filename_20130214_suffix.csv我想在bash中替换yyyymmdd部分.这是我打算做的:
file=`ls -t /path/filename_* | head -1`
file2=${file/20130214/20130215}
#this will not work
#file2=${file/[0-9]{8}/20130215/}
Run Code Online (Sandbox Code Playgroud) 如何从 SGE 获取(最近)失败的作业列表(failed=100 或 exit_status=137)?从qacct帮助:
[-j [job_id|job_name|pattern]] list all [matching] jobs
Run Code Online (Sandbox Code Playgroud)
如何使用模式?我尝试了以下方法,不起作用。
qacct -j failed=100
Run Code Online (Sandbox Code Playgroud) 我发现 datetime.timestamp() 函数在 Linux 和 Windows 上返回不同的值。这是一个简单的复制方法:
from datetime import date, time, datetime, timedelta
def main():
dt = datetime(2000, 1, 1)
edt = datetime(2006, 12, 31)
fname = 't1.csv'
f = open(fname, 'w')
f.write('date,timestamp\n')
while dt <= edt:
f.write('{0:%Y-%m-%d},{1:.0f}\n'.format(dt, dt.timestamp()))
dt += timedelta(days=1)
f.close()
return 0
Run Code Online (Sandbox Code Playgroud)
这是与 Windows 最后的不同部分:(Windows7 64 + Python3.4.3 64)
...
2006-10-30,1162180800
2006-10-31,1162267200
2006-11-01,1162353600
2006-11-02,1162440000
2006-11-03,1162526400
2006-11-04,1162612800
2006-11-05,1162699200
...
Run Code Online (Sandbox Code Playgroud)
以下是相应的 Linux 输出:(RedHat6 64 + Python 3.4.3 64)
...
2006-10-30,1162184400
2006-10-31,1162270800
2006-11-01,1162357200
2006-11-02,1162443600
2006-11-03,1162530000
2006-11-04,1162616400
2006-11-05,1162702800
...
Run Code Online (Sandbox Code Playgroud)
系统全部使用具有自动 …
我正在运行服务器(oracle/sun)JVM,如何检查它在运行时使用哪个 GC?例如,如果使用 UseG1GC,则使用 UseConcMarkSweepGC。(jdk为1.7_79)
我知道我可以使用来jinfo <pid>检查输出中的虚拟机标志。但是如果 JVM 在没有这些参数的情况下启动怎么办?
我也找不到这个信息jvisualvm。
尝试在Windows 7上使用jtds 1.3 + jdk1.8(64)时出现以下错误.
Exception in thread "main" java.lang.RuntimeException: Error initializing DESEngine
at net.sourceforge.jtds.util.DESEngine.init(DESEngine.java:76)
at net.sourceforge.jtds.util.DESEngine.<init>(DESEngine.java:51)
at net.sourceforge.jtds.jdbc.NtlmAuth.answerLmChallenge(NtlmAuth.java:52)
at net.sourceforge.jtds.jdbc.TdsCore.sendNtlmChallengeResponse(TdsCore.java:2179)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:613)
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:369)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:183)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at test4.Test4.main(Test4.java:15)
Caused by: java.security.NoSuchAlgorithmException: DES SecretKeyFactory not available
at javax.crypto.SecretKeyFactory.<init>(SecretKeyFactory.java:122)
at javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:160)
at net.sourceforge.jtds.util.DESEngine.init(DESEngine.java:69)
... 9 more
Run Code Online (Sandbox Code Playgroud)
示例代码:
public static void main(String[] args) throws Exception {
String url = "jdbc:jtds:sqlserver://server:1433/db1;domain=dm1";
String user = "user";
String pwd = "password";
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection cn = DriverManager.getConnection(url, user, pwd);
System.out.println("connected!"); …Run Code Online (Sandbox Code Playgroud)