小编Hob*_*obo的帖子

在使用文件时截断文件(Linux)

我有一个将大量数据写入stdout的进程,我将其重定向到日志文件.我想通过偶尔将当前文件复制到新名称并截断它来限制文件的大小.

我通常截断文件的技巧,比如

cp /dev/null file
Run Code Online (Sandbox Code Playgroud)

不起作用,大概是因为这个过程正在使用它.

有什么方法可以截断文件吗?或者删除它并以某种方式将进程'stdout与新文件关联?

FWIW,它是第三方产品,我无法修改以更改其日志记录模型.

EDIT重定向文件似乎与上面的副本有相同的问题 - 文件在下次写入时返回到之前的大小:

ls -l sample.log ; echo > sample.log ; ls -l sample.log ; sleep 10 ; ls -l sample.log
-rw-rw-r-- 1 user group 1291999 Jun 11  2009 sample.log
-rw-rw-r-- 1 user group 1 Jun 11  2009 sample.log
-rw-rw-r-- 1 user group 1292311 Jun 11  2009 sample.log
Run Code Online (Sandbox Code Playgroud)

unix linux logging truncate file

34
推荐指数
7
解决办法
6万
查看次数

使用dplyr按自定义顺序排列行

使用arrange函数dplyr,我们可以按升序或降序排列行.想知道如何按自定义顺序排列行.请参阅MWE.

Reg <- rep(LETTERS[1:3], each = 2)
Res <- rep(c("Urban", "Rural"), times = 3)
set.seed(12345)
Pop <- rpois(n = 6, lambda = 500000)
df <- data.frame(Reg, Res, Pop)

df
   Reg   Res    Pop
1    A Urban 500414
2    A Rural 500501
3    B Urban 499922
4    B Rural 500016
5    C Urban 501638
6    C Rural 499274

df %>%
  arrange()
Run Code Online (Sandbox Code Playgroud)

期望的输出

   Reg   Res    Pop
5    C Urban 501638
6    C Rural 499274
1    A Urban 500414
2 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation dplyr

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

如何通过使用dplyr传递变量名来删除列?

我的df如下:

a <- data_frame(keep=c("hello", "world"),drop = c("nice", "work"))
a
Source: local data frame [2 x 2]
   keep  drop
  (chr) (chr)
1 hello  nice
2 world  work
Run Code Online (Sandbox Code Playgroud)

我可以使用a %>% select(-drop)删除列没有问题.但是,如果我想将变量传递给present drop列,则返回错误.

name <- "drop"
a  %>% select(-(name))
Error in -(name) : invalid argument to unary operator
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

我可以强制Maven 2要求在命令行上指定属性吗?

我正在设置maven构建,并且需要在命令行上将目标服务器指定为属性(然后用于选择适当的配置文件),例如

mvn -Denv=test
Run Code Online (Sandbox Code Playgroud)

如果财产未设置,我希望构建失败 - 这可能吗?

是的,我是Maven的新手.

编辑:我已经看到这个链接,这似乎暗示它是不可能的,但我不知道它是如何最新的.

maven-2

19
推荐指数
2
解决办法
8462
查看次数

将Jar添加到独立的pyspark

我正在推出一个pyspark计划:

$ export SPARK_HOME=
$ export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.9-src.zip
$ python
Run Code Online (Sandbox Code Playgroud)

和py代码:

from pyspark import SparkContext, SparkConf

SparkConf().setAppName("Example").setMaster("local[2]")
sc = SparkContext(conf=conf)
Run Code Online (Sandbox Code Playgroud)

如何添加jar依赖项,例如Databricks csv jar?使用命令行,我可以像这样添加包:

$ pyspark/spark-submit --packages com.databricks:spark-csv_2.10:1.3.0 
Run Code Online (Sandbox Code Playgroud)

但我没有使用任何这些.该程序是一个更大的工作流程的一部分,没有使用spark-submit我应该能够运行我的./foo.py程序,它应该工作.

  • 我知道你可以设置extraClassPath的spark属性,但你必须将JAR文件复制到每个节点?
  • 尝试了conf.set("spark.jars","jar1,jar2"),它们对py4j CNF异常也不起作用

python apache-spark pyspark

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

"在python中调用subprocess.Popen时,系统无法找到指定的文件"

我正在尝试使用svnmerge.py来合并一些文件.它使用python,当我使用它时,我得到一个错误 - "系统找不到指定的文件".工作中的同事运行相同版本的svnmerge.py和python(2.5.2,特别是r252:60911)没有问题.

我找到了这个链接,它描述了我的问题.尝试在那里概述的内容,我确认Python可以找到svn(它在我的路径中):

P:\>python 
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> i,k = os.popen4("svn --version") 
>>> i.close() 
>>> k.readline() 
'svn, version 1.4.2 (r22196)\n' 

但是,看一下svnmerge.py代码,我发现对于python版本2.4及更高版本,它遵循不同的执行路径.它使用subprocess.Popen()而不是调用os.popen4().尝试重现错误:

C:\>python
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> p = subprocess.Popen("svn --version", stdout=subprocess.PIPE, 
>>> close_fds=False, stderr=subprocess.PIPE)
Traceback (most …

python svn-merge

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

将混淆矩阵的输出保存为 .csv 表

我有以下代码导致类似表格的输出

 lvs <- c("normal", "abnormal")
 truth <- factor(rep(lvs, times = c(86, 258)),
                 levels = rev(lvs))
 pred <- factor(
                c(
                  rep(lvs, times = c(54, 32)),
                  rep(lvs, times = c(27, 231))),               
                levels = rev(lvs))

 xtab <- table(pred, truth)

 library(caret)
 confusionMatrix(xtab)

 confusionMatrix(pred, truth)
 confusionMatrix(xtab, prevalence = 0.25)   
Run Code Online (Sandbox Code Playgroud)

我想将输出的以下部分导出为.csv表格

               Accuracy : 0.8285          
                 95% CI : (0.7844, 0.8668)
    No Information Rate : 0.75            
    P-Value [Acc > NIR] : 0.0003097       

                  Kappa : 0.5336          
 Mcnemar's Test P-Value : 0.6025370       

            Sensitivity : 0.8953          
            Specificity : 0.6279 …
Run Code Online (Sandbox Code Playgroud)

csv r export-to-csv confusion-matrix

6
推荐指数
2
解决办法
7852
查看次数

Dplyr:对包含列表的列使用mutate

我有以下数据框(抱歉没有提供dput的示例,当我在此处粘贴时,它似乎不适用于列表):

数据

现在,我想创建一个新列y是需要之间的区别mnt_ope,并ref_amount为每一个元素ref_amount.结果将是每行中具有与相应值相同的元素数量的列表ref_amount.

我试过了:

data <- data %>%
   mutate( y = mnt_ope - ref_amount)
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:

Evaluation error: non-numeric argument to binary operator.

dput:

structure(list(mnt_ope = c(500, 500, 771.07, 770.26, 770.26, 
770.26, 770.72, 770.72, 770.72, 770.72, 770.72, 779.95, 779.95, 
779.95, 779.95, 2502.34, 810.89, 810.89, 810.89, 810.89, 810.89
), ref_amount = list(c(500, 500), c(500, 500), c(771.07, 770.26, 
770.26), c(771.07, 770.26, 770.26), c(771.07, 770.26, 770.26), 
    c(771.07, 770.26, 770.26), c(771.07, 770.26, 770.26), c(771.07, …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

2d字典,每个值有多个键

我想我想制作一个每个值有多个键的二维字典.

我知道如何使用defaultdict以下方法制作2d字典:

from collections import defaultdict
2d_dict = defaultdict(dict)

2d_dict['canned_food']['spam'] = 'delicious'
Run Code Online (Sandbox Code Playgroud)

而且我知道使用常规字典可以制作多个键

dictionary={('food','canned_food'):spam}
Run Code Online (Sandbox Code Playgroud)

但我想做的事情如下:

2d_dict[('canned_food','food')]['spam'] = 'delicious'
Run Code Online (Sandbox Code Playgroud)

在字典的第一维中,每个值需要~25个键.有没有办法做到这一点defaultdict

即使有办法用dicts这样做,这是一个合理的方法来制作一个简单的多维查找表吗?

python dictionary key

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