我在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最初无法在正确的主目录中搜索config
和credentials
文件.我也想知道是否有办法纠正(这将消除对AWS_CONFIG_FILE
env var 的需要).
windows cygwin credentials command-line-interface amazon-web-services
当您打印调用 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_string或pandas.set_option 中看不到任何选项。
我已经进行了网络搜索,但没有找到答案。 This question询问如何删除这2个空格,而 …
考虑这个 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) 考虑一个名为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)