小编ber*_*roe的帖子

获取python中本地定义函数的列表

如果我有这样的脚本:

import sys

def square(x):
    return x*x

def cube(x):
    return x**3
Run Code Online (Sandbox Code Playgroud)

如何返回程序中本地定义的所有函数的列表['square', 'cube'],而不是导入的函数.

我尝试时将它们包括在内,dir()但所有变量和其他导入的模块也是如此.我不知道该怎么做dir才能引用本地执行的文件.

python function

6
推荐指数
3
解决办法
3361
查看次数

Bash 子字符串和参数扩展而不分配给变量

更新2:这个问题与这个问题相关,可能是因为这可能/可能不起作用的根本原因是相同的。但我不确定它是否实际上是重复的,因为嵌套只是如何在其中获取字符串的一个示例。同样的基本问题也可以改写为:

  • 有没有办法在参数扩展中直接使用字符串,可能使用expr
  • 将输出通过管道传输到参数扩展的最简洁方法是什么?

更多“假”语法的例子来说明这些目标......

${$(echo "b"; b="ABCDE")::3}  #  Assign output inside?
... | grep -o "ABCDE" | ${-::2}   #  pipe to placeholder inside?
Run Code Online (Sandbox Code Playgroud)

因此,根据您的目标,它可能是骗局,也可能不是骗局。无论如何,从目前的答案来看,这种方法听起来无论如何都是不可能的......


这是关于 bash 操作的一般问题,而不是试图获取特定的字符串子程序......

我知道您可以使用参数扩展和其他技巧来提取或替换已定义变量的部分内容。

例如:

$ MYVAR=$(date)    # just to generate text; could be "ABCDE"
$ echo $MYVAR
Mon Oct 20 15:55:07 PDT 2014
$ echo ${MYVAR:11}
15:55:07 PDT 2014
$ echo ${MYVAR%:*}
Mon Oct 20 15:55
Run Code Online (Sandbox Code Playgroud)

我想要的是一种“嵌套”这些操作而不创建中间变量的方法。

例如,当你这样做时你会得到什么:

$ TIME=${MYVAR:11}
$ echo ${TIME%:*}
    15:55
Run Code Online (Sandbox Code Playgroud)

我希望能够将正在发生的操作嵌套在TIME正在发生的操作内部MYVAR

我想到的潜在语法类似于$()让您嵌套操作,但对变量执行此操作。它可能看起来像这样......(这不起作用——我已经尝试过!) …

bash shell

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

将多个返回值附加到Python中的不同列表

我有计算并返回7个浮点数的函数,每个值都被附加到不同的列表中.如果我输入7个不同的append语句,我觉得肯定有问题,但是有更多的pythonic方式来做这件事.

例如(我甚至不喜欢在这里输入它!):

a,b,c,d,e,f,g = range(7)
alist.append(a)
blist.append(b)
clist.append(c)
dlist.append(d)
elist.append(e)
flist.append(f)
glist.append(g)
Run Code Online (Sandbox Code Playgroud)

根据这个相关的问题,似乎这是不可能的......必须有一种方式使用+=[a]或列出理解或循环或其他东西?

我想到的一件事是继续将所有这7个值附加到主列表中,然后在最后转置它zip(*MasterList)以生成单个列表?

人们会推荐什么?

python performance list

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

通过_kMDItemUserTags或kMDItemOMUserTags在xattr中使用多个关键字

在重新组织图像时,出于对OSX Mavericks的期待,我正在编写一个脚本以将标签插入xattr图像文件的字段中,以便可以使用Spotlight搜索它们。(为了安全起见,我也在编辑EXIF。)

我的问题是:

  1. 最好使用哪个属性?_kMDItemUserTags似乎是OSX版本,但kMDItemOMUserTagsOpenMeta已在使用它。理想情况下,我希望将与Linux和OSX向前兼容。

  2. 如何设置多个标签?是用逗号或空格分隔还是其他?

作为示例,使用python xattr模块,我发出了以下命令:

xattr.setxattr(FileName, "_kMDItemUserTags", "Name - Sample")
xattr.setxattr(FileName, "kMDItemOMUserTags", "Name,Institution,Sample")
Run Code Online (Sandbox Code Playgroud)

我也看到这些标签的记载:kOMUserTagskMDItemkeywords,但不知道他们是否有可能实现?

编辑:进一步的调查表明,对于在10.8中可搜索的事物,

  • 您需要以com.apple.metadata作为kMD的开头:
  • 您必须进行十六进制编码或包装在plist中。

此python代码将为kMDItemFinderComment生成标记,可在聚光灯下搜索...

def writexattrs(F,TagList):

    """ writexattrs(F,TagList):
    writes the list of tags to three xattr field:
    'kMDItemFinderComment','_kMDItemUserTags','kMDItemOMUserTags'
       This version uses the xattr library """

    plistFront = '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><array>'
    plistEnd = '</array></plist>'
    plistTagString = ''
    for Tag in TagList:
        plistTagString = plistTagString + '<string>{}</string>'.format(Tag)
    TagText = plistFront …
Run Code Online (Sandbox Code Playgroud)

python macos spotlight xattr osx-mavericks

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

在编写脚本时在python 2和3版本之间切换

我通常用python 2.7开发,但是想在python 3.x中开始创建一些工具.让两者并排运行的最简单方法是什么,同时保持对我安装的库的某些控制...

如果我pyenv用来在版本之间切换,它会传播到通用的shebang线吗?就像是

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

甚至更好,我可以指定shebang中的哪个python?

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)

我期待很多"使用virtualenv"回复.这真的是唯一的方法吗?我觉得我想在我的系统上安装"基础"python,无论我安装了什么库,这样我就可以通过键入类似于pyenv global 3.2.3

我目前正在使用OSX,Mountain Lion.


试着更好地解释一下,我有两个替代问题:

  • 如果我使用类似的东西virtualenv,我是否会失去交替运行python2和python3脚本的能力,而不会改变环境(即,只是通过shebang)?

  • 相反,如果我使用两个独立版本安装,我如何控制/知道将安装什么pipeasy_install例如.


更新:目前python3在shebang行使用,并使用pip3安装包到python3 ...似乎工作正常.

python macos virtualenv python-2.7 python-3.x

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

可以将标准输出直接传输到网络浏览器吗?

我有一些生成 HTML 输出的 python 实用程序。我希望能够将输出重定向到浏览器来预览它,而不是保存到临时文件并在网络浏览器中打开它。例如,类似:

myscript.py | open /Applications/Safari.app
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到这样的事情吗?我在 OS X 上。

browser macos shell web

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

颜色点由它们的出现计数在ggplot2 geom_count中

我想根据ggplot2的geom_count计算颜色.

这是我到目前为止:

ggplot(test3, aes(eleStart, eleLength)) +  geom_count(aes(alpha=0.25, color= ..prop..)) +
  scale_y_continuous(breaks=seq(0,130,5)) +
  scale_x_continuous(breaks=seq(0,114)) +
  theme(panel.grid.minor = element_blank())
Run Code Online (Sandbox Code Playgroud)

现在我基本上只想geom_count用geom_count计算的实际计数而不是它们的比例进行交换.

test3数据帧看起来像:

# A tibble: 294 x 2
# Groups:   X1 [56]
eleStart eleLength
<int>     <int>
1        0         3
2        0         6
3        0         7
4        0         9
5        0        11
6        0        23
7        0        25
8        0        26
9        0        26
10       0        26
# ... with 284 more rows
Run Code Online (Sandbox Code Playgroud)

r colors ggplot2

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

使用 geom_sf 跨越日期变更线时地图上的闭合边界

我正在尝试制作一个罗宾逊投影图,该地图以经度 0 为中心,并且穿过 180\xc2\xb0 线的两侧。

\n

我的代码如下:

\n
library("rnaturalearthdata")\nworld <- ne_countries(scale = "medium", returnclass = "sf")\nrobinson = "+proj=robin +lon_0=-90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"\ntransformed = st_transform(world, robinson)\nggplot(data=transformed) + geom_sf(fill = "gray", colour = "black")+theme_bw()\n
Run Code Online (Sandbox Code Playgroud)\n

这会生成此地图,该地图的方向正确,但所有分割边界都是“由内而外”并环绕整个地图。

\n

在此输入图像描述

\n

9 年前就有这个相关问题,但我希望通过最近的软件包更新,有一个不太复杂的解决方案,这将使我们能够使用而不geom_point()需要额外的转换来绘制纬度/经度数据点。

\n

编辑#2:L. Tyrone 的解决方案对我来说非常有用。要使用此方法绘制点,您必须将它们从数据框转换为具有相同坐标参考系统的 sf 对象,否则纬度/经度将被解释为米,并且最终与 0,0 无法区分:

\n
# Transform with fake data...\nfakedata=data.frame(lat=c(-10,-20,80),lon=c(45,-100,120),tag=c("indian","tropical","arctic"))\ntranspoint = st_as_sf(fakedata,coords=c("lon","lat"),crs=4326)\ndtran = st_transform(transpoint,robinson)\n
Run Code Online (Sandbox Code Playgroud)\n

然后,您可以通过将特殊geometry=stat=声明添加到geom_point或 来绘制它们geom_text_repel

\n
geom_point(data=dtran,aes(geometry=geometry,color=tag),stat="sf_coordinates") +\ngeom_text_repel(data=dtran,aes(geometry=geometry,label=tag),stat="sf_coordinates")\n
Run Code Online (Sandbox Code Playgroud)\n

最终结果:\n …

maps r coordinate-systems ggplot2 geom-sf

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

向轴标签添加逗号分隔符

我有以下示例,其中我尝试向大于 999 的数字添加逗号分隔符(即 1,000 2,000 3,000 ...)

#Dummy data
Data1 <- data.frame(flow = c(8000,8.5,6,7.1,9), SP_elev = c(20,11,5,25,50))
Data2 <- data.frame(flow = c(7000,7.2,6.5,8.2,8.5), SP_elev = c(13,15,18,25,19))
Data3 <- data.frame(flow = c(2000,3,5,7,9), SP_elev = c(20,25,28,30,35))
Data4 <- data.frame(flow = c(1000,4,6,8,9), SP_elev = c(13,15,18,25,19))
Data5 <- data.frame(flow = c(1000,4,6,8,9), SP_elev = c(13,15,18,25,19))
Data6 <- data.frame(flow = c(1000,4,6,8,9), SP_elev = c(22,23,25,27,29))

#Create Vector list (in place of list.files)
dataframes = list("Data1" = Data1, 
                  "Data2" = Data2, 
                  "Data3" = Data3,
          "Data4" = Data4,
          "Data5" = …
Run Code Online (Sandbox Code Playgroud)

plot r axis-labels

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

无法在 Python 控制台中使用“cd”命令

我想在 PyCharm 的 python 控制台中使用“cd”命令更改目录。它一直有效,直到我买了一台新电脑。

环境为Python 3.7;皮查姆 2019.1.1。我用谷歌搜索,有些人告诉我使用 os.chdir() 但我想使用“cd”,因为它很容易使用。

错误报告是:

NameError: name 'cd' is not defined
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

谢谢 :)

python cd pycharm python-3.x

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

使用 R 中的 coord_sf 显示地图轴上的度数

我正在制作地图并想使用替代投影。当我使用 执行此操作时coord_sf,x 轴和 y 轴会获得一些其他单位的标签,例如 0.001\xc2\xb0W。我不是地理学家,所以我不确定这些是什么。我只想查看纬度和经度......

\n\n

生成基本地图的代码:

\n\n
mapWorld <- borders("world", colour="gray70", fill="gray70") \nggplot() + mapWorld +  coord_sf(xlim=c(-125, 155),ylim=c(-22,40), crs = "+proj=laea") \n
Run Code Online (Sandbox Code Playgroud)\n\n

结果图:

\n\n

地图投影

\n

maps r ggplot2

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