if
(
@ARGV
!=
2
)
{
print
"
\t
Usage: perl
$0
<infile>
\n
"
;
die
"
\t
Use with correct infile"
;
open
IN,
"
$ARGV
[0]"
or die
;
my %para
;
while
(
<
IN
>
)
{
chomp
;
if
(
/^
if
(
/^$/
)
{
next
;
}
;
my
(
$k
,
$v
)
=
split
(
/
\
=
/,
$_
)
;
$para
{
$k
}
=
$v
;
close IN
;
my @key
=
keys %para
;
my @value
=
values %para
;
foreach my
$key
(
@key
)
{
open
OUT,
">>"
,
"
$ARGV
[1]"
or die
;
print OUT
"
$key
\t
$para
{
$key
}
\n
"
;
close OUT
;
perl open.pl test.para open1
输入文件test.para为:
first_day=Monday
second_day=Tuesday
美国=美利坚
输出文件open1为:
美国 美利坚
first_day Monday
second_day Tuesday
本文介绍perl如何读取文件,存入哈希,调用哈希,存入文件:#! /usr/bin/perluse strict;use warnings; if(@ARGV!=2){ print "\tUsage: perl $0 <infile>\n"; die "\tUse with correct infile";}##读入文件$ARGV[0]存入哈希 #open IN, "<$ARGV[0]";#open IN, "<","$ARGV[0
1)通俗理解-->'文件句柄'用来'对应'要操作的'文件系统中的文件' -->'不太严谨'
① '首先'为要打开的文件'绑定文件句柄'(称为打开文件句柄) -->'打开'
② '然后'在后续的操作中都通过文件句柄来'操作'对应的文件 -->'操作'
③ '最后'关闭文件句柄 -->'关闭'
++++++++++++'更通俗的理解'++++++++++++
可将'文件句柄'看作'Linux中文件描述符'的概念
备注:..
1. 数组和printf
一般不会把数组当成参数给printf使用,因为数组可以包含任意数目的元素,而格式化字符串只用到固定数目的元素,但我们可以把格式字符串存到变量中,以方便使用和调试
my @items = qw( wilma dino pebbles );
my $format = "The items are:\n" . ("%10s\n" x @items);
## print "the format is >>$format<<\n"; # 用于调试
printf $fo
# 读取文件,指定分隔符为一个或多个空格
df = pd.read_csv('/home/shenwk/perl_practice/test3_file/form_test', sep='\s+', header=None)
# 对数据进行格式化处理
df[1] = df[1].apply(lambda x: '{:.2f}'.format(x)) # 保留2位小数
df[2] = df[2].apply(lambda x: '{:<10}'.format(x)) # 左对齐,最多10个字符
df[3] = df[3].apply(lambda x: '{:.2e}'.format(x)) # 科学记数法
df[4] = df[4].apply(lambda x: hex(x)) # 十六进制格式
# 将格式化后的数据写入新的文件
df.to_csv('/home/shenwk/perl_practice/test3_file/formatted_file', sep=' ', header=None, index=False)
在上述示例中,首先使用pandas库的read_csv函数读取文件,指定分隔符为一个或多个空格,同时不读取文件的第一行作为列名。接着,使用apply函数对每一列进行格式化处理,最后使用to_csv函数将格式化后的数据写入新的文件,指定分隔符为一个空格,同时不写入列名和行号。
Unbelievable_u:
群体遗传学-选择清除分析基本概念及参数
PanzerVII: