我知道在SO上有一些关于这个的问题,但我找不到我想要的东西.
我正在使用pyyaml来读取(.load()).yml文件,修改或添加一个键,然后.dump()再次写入它.问题是我想在转储后保留文件格式,但它会改变.
例如,我编辑键en.test.index.few说"Bye",而不是"Hello"
蟒蛇:
with open(path, 'r', encoding = "utf-8") as yaml_file:
self.dict = pyyaml.load(yaml_file)
Run Code Online (Sandbox Code Playgroud)
然后,更改密钥:
with open(path, 'w', encoding = "utf-8") as yaml_file:
dump = pyyaml.dump(self.dict, default_flow_style = False, allow_unicode = True, encoding = None)
yaml_file.write( dump )
Run Code Online (Sandbox Code Playgroud)
YAML:
之前:
en:
test:
new: "Bye"
index:
few: "Hello"
anothertest: "Something"
Run Code Online (Sandbox Code Playgroud)
后:
en:
anothertest: Something
test:
index:
few: Hello
new: Bye
Run Code Online (Sandbox Code Playgroud)
有没有办法保持相同的格式?,例如qoutes和order.我使用了错误的工具吗?
我知道也许原始文件不完全正确,但我无法控制它(这是一个Ruby on Rails i18n文件).
非常感谢你.
您可以创建一个shell脚本或Python或Ruby脚本,并使用"终端"在Mac上运行它...如果您打开Finder,并单击包含已保存shell脚本源代码的文件的图标有没有办法让脚本运行,而不是在我的文本编辑器中打开?
有没有办法在调用渲染之前检查twig模板是否存在?try catch块似乎不起作用,至少在开发环境中,而且,我更喜欢检查而不是异常的成本.
这个类TwigEngine有一个exists()方法,但没有找到使用的例子.
我正在使用yaml.dump输出字典.它根据键按字母顺序打印出每个项目.
>>> d = {"z":0,"y":0,"x":0}
>>> yaml.dump( d, default_flow_style=False )
'x: 0\ny: 0\nz: 0\n'
Run Code Online (Sandbox Code Playgroud)
有没有办法控制键/值对的顺序?
在我的特定用例中,反向打印(巧合)就足够了.但是为了完整性,我正在寻找一个答案,展示如何更精确地控制订单.
我看过使用collections.OrderedDict但是PyYAML没有(似乎)支持它.我也看过子类化yaml.Dumper,但我无法弄清楚它是否有能力改变项目顺序.
我已完成阅读并了解Try/Catch块的功能以及使用它的重要性.但我不知道何时/何地使用它们.有什么建议?我将在下面发布我的代码示例,希望有人有时间为我的示例提出一些建议.
public AMPFileEntity(string filename)
{
transferFileList tfl = new transferFileList();
_AMPFlag = tfl.isAMPFile(filename);
_requiresPGP = tfl.pgpRequired(filename);
_filename = filename.ToUpper();
_fullSourcePathAndFilename = ConfigurationSettings.AppSettings.Get("sourcePath") + _filename;
_fullDestinationPathAndFilename = ConfigurationSettings.AppSettings.Get("FTPStagePath") + _filename;
_hasBeenPGPdPathAndFilename = ConfigurationSettings.AppSettings.Get("originalsWhichHaveBeenPGPdPath");
}
public int processFile()
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(" ");
sb.AppendLine(" --------------------------------");
sb.AppendLine(" Filename: " + _filename);
sb.AppendLine(" AMPFlag: " + _AMPFlag);
sb.AppendLine(" Requires PGP: " + _requiresPGP);
sb.AppendLine(" --------------------------------");
sb.AppendLine(" ");
string str = sb.ToString();
UtilityLogger.LogToFile(str);
if (_AMPFlag)
{
if (_requiresPGP == true) …Run Code Online (Sandbox Code Playgroud) MySQL可以将列转换为行,动态添加行所需的列数.我认为我的问题可能与数据透视表有关,但我不确定,除了通过给出以下示例,我不知道如何构建这个问题.
给出两个表A和B,看起来像
表A.
+--+-----+----+
|id|order|data|
+--+-----+----+
|1 |1 |P |
+--+-----+----+
|2 |2 |Q |
+--+-----+----+
|2 |1 |R |
+--+-----+----+
|1 |2 |S |
+--+-----+----+
Run Code Online (Sandbox Code Playgroud)
我想编写一个如下所示的查询:
结果表
+--+-----+-----+
|id|data1|data2|
+--+-----+-----+
|1 |P |S |
+--+-----+-----+
|2 |R |Q |
+--+-----+-----+
Run Code Online (Sandbox Code Playgroud)
基本上我想将表B中的每一行转换为结果表中的一列.如果在表B中为id = 1添加了一个新条目,那么我希望结果表自动扩展一列以容纳这个额外的数据点.
背景
在我定期使用的每种其他编程语言中,操作函数的返回值很简单,而不会声明一个新变量来保存函数结果.
但是,在PHP中,这看起来并不那么简单:
<?php
function foobar(){
return preg_split('/\s+/', 'zero one two three four five');
}
// can php say "zero"?
/// print( foobar()[0] ); /// <-- nope
/// print( &foobar()[0] ); /// <-- nope
/// print( &foobar()->[0] ); /// <-- nope
/// print( "${foobar()}[0]" ); /// <-- nope
?>
Run Code Online (Sandbox Code Playgroud)
<?php
function zoobar(){
// NOTE: casting (object) Array() has other problems in PHP
// see e.g., http://stackoverflow.com/questions/1869812
$vout = (object) Array('0'=>'zero','fname'=>'homer','lname'=>'simpson',);
return $vout;
}
// can php say "zero"? …Run Code Online (Sandbox Code Playgroud) 问题:我希望能够一步提取tar.gz文件.这使我的问题几乎 与这个问题相同:tar-gz的stackoverflow问题.
我的问题是几乎相同的,但不一样的,因为我想做到这一点,使用7zip的命令行(或类似的东西)一个bat文件或红宝石/的Perl/Python脚本内的窗口.
问题:这个看似简单的任务证明比第一次出现更具参与性.有没有人有一个脚本可以做到这一点?
在Python中,编写它是很繁琐的:
print "foo is" + bar + '.'
Run Code Online (Sandbox Code Playgroud)
我可以在Python中做这样的事吗?
print "foo is #{bar}."
ruby python language-comparisons string-formatting string-interpolation
我在某种程度上得到它,但我还没有看到一个没有提出更多问题而不是答案的例子.
http://rhnh.net/2011/01/31/yaml-tutorial
# Set.new([1,2]).to_yaml
--- !ruby/object:Set
hash:
1: true
2: true
Run Code Online (Sandbox Code Playgroud)
我知道我们正在声明一个Set标签.我不知道后续哈希映射与它有什么关系.我们是在宣布架构吗?有人能给我看一个带有多个标签声明的例子吗?
我已经阅读了规范:http://yaml.org/spec/1.2/spec.html#id2761292
%TAG ! tag:clarkevans.com,2002:
Run Code Online (Sandbox Code Playgroud)
这是宣告架构吗?为了成功解析文件,解析器还需要做些什么吗?某种类型的模式文件?
http://www.yaml.org/refcard.html
Tag property: # Usually unspecified.
none : Unspecified tag (automatically resolved by application).
'!' : Non-specific tag (by default, "!!map"/"!!seq"/"!!str").
'!foo' : Primary (by convention, means a local "!foo" tag).
'!!foo' : Secondary (by convention, means "tag:yaml.org,2002:foo").
'!h!foo': Requires "%TAG !h! <prefix>" (and then means "<prefix>foo").
'!<foo>': Verbatim tag (always means "foo").
Run Code Online (Sandbox Code Playgroud)
为什么与主标记和辅助标记相关,为什么辅助标记引用URI?有这些问题正在解决什么问题?
我似乎看到很多"他们是什么",没有"为什么他们在那里",或"他们用于什么".
python ×3
pyyaml ×3
yaml ×3
scripting ×2
.net ×1
7zip ×1
archive ×1
arrays ×1
c# ×1
desktop ×1
dictionary ×1
function ×1
group-by ×1
gzip ×1
macos ×1
mysql ×1
php ×1
pivot ×1
python-3.x ×1
quotes ×1
ruby ×1
shell ×1
sql ×1
symfony ×1
syntax ×1
tags ×1
tar ×1
transclusion ×1
try-catch ×1
twig ×1