小编Har*_*nch的帖子

如何让AWS命令行界面在cygwin中工作

我在Windows 7机器上安装了AWS命令行界面,当我从DOS shell调用命令时它立即起作用.

但DOS是有史以来发明的最糟糕的语言,对任何严肃的脚本来说都是可怕的.所以,我想通过cygwin从bash使用AWS CLI.

在我的例子中,已安装的AWS CLI是Windows版本.原则上,这应该不是问题,因为Windows命令可以从cygwin执行.(cygwin在其自己的环境中包含您的Windows环境变量,例如PATH.)

不幸的是,当我第一次尝试从cygwin/bash执行AWS CLI命令时,我收到一个错误:

$ aws s3 cp code.tgz s3://xyz/
upload failed: .\code.tgz to s3://xyz/code.tgz
Unable to locate credentials
Run Code Online (Sandbox Code Playgroud)

此错误可能是因为AWS CLI正在查找credentials文件的错误目录.在Windows上,它希望该文件位于%UserProfile%.aws和unix中~/.aws.

一个hack解决方法是在我的主目录中创建了一个名为的新文件config_credentials,其中包含该目录文件内容的config并集credentials.然后我创建了一个新的Windows系统env var,AWS_CONFIG_FILE其值是路径config_credentials.成功:从cygwin发出的AWS CLI命令现在可以正常工作.

我想知道是否有更好的解决方案?

我很好奇为什么AWS CLI最初无法在正确的主目录中搜索configcredentials文件.我也想知道是否有办法纠正(这将消除对AWS_CONFIG_FILEenv var 的需要).

windows cygwin credentials command-line-interface amazon-web-services

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

打印时指定 Pandas DataFrame 列之间的空格数

当您打印调用 DataFrame.to_string 的 Pandas DataFrame 时,它​​通常会在列之间插入至少 2 个空格。例如,这段代码

import pandas as pd

df = pd.DataFrame( {
    "c1" : ("a", "bb", "ccc", "dddd", "eeeeee"),
    "c2" : (11, 22, 33, 44, 55),
    "a3235235235": [1, 2, 3, 4, 5]
} )
print(df)
Run Code Online (Sandbox Code Playgroud)

产出

       c1  c2  a3235235235
0       a  11            1
1      bb  22            2
2     ccc  33            3
3    dddd  44            4
4  eeeeee  55            5
Run Code Online (Sandbox Code Playgroud)

每列之间至少有 2 个空格。

我正在复制打印在控制台上的 DataFarames 并将其粘贴到文档中,并且我收到了难以阅读的反馈:人们希望列之间有更多的空间。

有没有标准的方法来做到这一点?

我在DataFrame.to_stringpandas.set_option 中看不到任何选项。

我已经进行了网络搜索,但没有找到答案。 This question询问如何删除这2个空格,而 …

python spaces tostring dataframe pandas

8
推荐指数
1
解决办法
1058
查看次数

在 R 中,%OSn 时间格式是否仅对格式化有效,但对解析无效?

考虑这个 R 代码,它使用定义的时间格式字符串(下面的 timeFormat 变量)来格式化和解析日期:


time = as.POSIXct(1433867059, origin = "1970-01-01")
print(time)
print( as.numeric(time) )

timeFormat = "%Y-%m-%d %H:%M:%OS3"
tz = "EST"

timestamp = format(time, format = timeFormat, tz = tz)
print(timestamp)

timeParsed = as.POSIXct(timestamp, format = timeFormat, tz = tz)
print(timeParsed)
print( as.numeric(timeParsed) )
Run Code Online (Sandbox Code Playgroud)

如果我将其粘贴到运行最新 (3.2.0) 稳定版本的 Windows 机器上的 Rgui 中,我会得到以下信息:


> time = as.POSIXct(1433867059, origin = "1970-01-01")
> print(time)
[1] "2015-06-09 12:24:19 EDT"
> print( as.numeric(time) )
[1] 1433867059
> 
> timeFormat = "%Y-%m-%d %H:%M:%OS3"
> tz = …
Run Code Online (Sandbox Code Playgroud)

format parsing r posixct

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

命令脚本退出代码看不到同一行&&或||?

考虑一个名为t.cmd的命令脚本,它只包含以下两行:

@exit /b 123
@echo If you see this, THEN EXIT FAILED..
Run Code Online (Sandbox Code Playgroud)

因此,脚本只是将脚本执行过程的退出代码设置为123,但不会杀死cmd.exe.最后的回声确认退出实际上导致立即返回(其输出不应出现).

现在执行此脚本,然后打印出%errorlevel%:

>t.cmd

>echo %errorlevel%
123
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都那么好:一切都表现得与预期一致.

但现在在一行上执行上述所有操作,使用&&进行条件执行:

>t.cmd && echo %errorlevel%
123
Run Code Online (Sandbox Code Playgroud)

我不指望这样:如果t.cmd确实返回非0退出代码,那么它应该在执行之后停止&&(即echo)之后的所有内容.我们看到它打印的事实意味着它DID执行.到底他妈发生了什么?

如果在一行上执行上述所有操作,请使用|| 用于条件执行:

>t.cmd || echo %errorlevel%

>
Run Code Online (Sandbox Code Playgroud)

这种行为也与我的预期相反(尽管它与上面的&&行为一致).

请注意,这种奇怪的行为仅适用于bat文件,但不适用于"原始命令".

证明:考虑以下命令行交互,而不是调用t.cmd,我尝试执行bogus命令abcdef:

>abcdef
'abcdef' is not recognized as an internal or external command,
operable program or batch file.

>echo %errorlevel%
9009

>abcdef && echo %errorlevel%
'abcdef' is not recognized as an internal or external command,
operable program or batch file.

>abcdef || echo %errorlevel%
'abcdef' is …
Run Code Online (Sandbox Code Playgroud)

windows cmd batch-file

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