Fortran Coder

读取csv文件,并进行计算

查看数: 32508 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-3-1 21:47

正文摘要:

想要读取excel另存为的csv文件sheet1中数据,如图: 数据共48行, 我想要写一个程序读到这一列数据,并将这一列数据分别乘以1和2,放到第二列和第三列中,最后输出csv,以便在excel中查看。 程序faa.f如下: 运行 ...

回复

vvt 发表于 2017-3-9 21:39:09
桂圆莲子汤 发表于 2017-3-9 19:08
请问,read(12,*,iostat=k) f    k的值到底是什么意义呢?
         if ( k/= 0 ) exit
是什么意思? ...

这是读取的状态。如果 k == 0 说明读取成功。 /= 0 则说明失败。
如果读取失败,就退出循环
桂圆莲子汤 发表于 2017-3-9 19:08:47
楚香饭 发表于 2017-3-2 10:56
试试这样:

[mw_shl_code=fortran,true]program main

请问,read(12,*,iostat=k) f    k的值到底是什么意义呢?
         if ( k/= 0 ) exit
是什么意思?
vvt 发表于 2017-3-2 19:33:56
太长了,该续行了。
楚香饭 发表于 2017-3-2 10:56:46
试试这样:

[Fortran] 纯文本查看 复制代码
program main
  implicit none
  integer :: k
  real ::f , a , b
  real ::ef10=1.09,ef25=0.31
  open(12 , file ="/home/iga_qtong/fortran_xcao/fa.csv")
  open(13 , file ="/home/iga_qtong/fortran_xcao/faout.csv")
  read(12,*)
  do
    read(12,*,iostat=k) f
    if ( k/= 0 ) exit
    a=f*ef10
    b=f*ef25
    write(13,*) f,',',a,',',b
  end do    
  close(12)
  close(13)
end program main
楚香饭 发表于 2017-3-2 10:48:03
end-of-file during read
意思是,读取时遇到了文件的尾部。(即文件内容的长度不符合代码的要求)

对于文本文件,尽量不要同时对一个文件一边读,一边写。最好是另外打开一个文件,作为输出文件,写入输出文件。

shellexecute 是 windows 上的函数,并不是用来输出 csv 的,而是用来调用 excel(或其他程序)来打开 csv 文件。
桂圆莲子汤 发表于 2017-3-2 10:45:34
楚香饭 发表于 2017-3-2 10:44
请点击 回形针 图标的 按钮上传图片

好的,谢谢谢谢,一直上传不上去,谢谢提示。
楚香饭 发表于 2017-3-2 10:44:32
请点击 回形针 图标的 按钮上传图片
桂圆莲子汤 发表于 2017-3-2 10:40:05
fcode 发表于 2017-3-1 22:17
你这是在linux上跑程序,但是你却写了一个windows上的路径。

谢谢大神,但是我更改完地址之后,如:
[Fortran] 纯文本查看 复制代码
program main
      implicit none
      integer :: i=48
      real ::f(48)
      real ::ef10=1.09,ef25=0.31
      real a(48),b(48)
      open(12 , file ="/home/iga_qtong/fortran_xcao/fa.csv")
      read(12,*)
        do i=1,48
        read(12,*) f(i)
        end do
        a(i)=f(i)*ef10
        b(i)=f(i)*ef25
        write(12,*) f(i),',',a(i),',',b(i)
      close(12)
      end program main

还是出现了以下问题,forrtl: severe (24): end-of-file during read, unit 12, file /home/iga_qtong/fortran_xcao/fa.csv
Image              PC                Routine            Line        Source            

faa.exe            00000000004052C6  Unknown               Unknown  Unknown
faa.exe            0000000000418923  Unknown               Unknown  Unknown
faa.exe            0000000000402D88  Unknown               Unknown  Unknown
faa.exe            0000000000402C7E  Unknown               Unknown  Unknown
libc.so.6          0000003358A1ED1D  Unknown               Unknown  Unknown
faa.exe            0000000000402B89  Unknown               Unknown  Unknown

并没有输出我想要的csv格式,我查看之后发现有人输出csv,使用了
real ::f_openfile    f_openfile=shellexecute(0,"open","/home/iga_qtong/fortran_xcao/fa.csv",null,null,12)
但是把这句加入会出现以下错误:
faa.f(18): error #5120: Unterminated character constant
      f_openfile=shellexecute(0,"open","/home/iga_qtong/fortran_xcao/fa.csv",null,null,12)
---------------------------------------^
faa.f(18): error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: ) :: , :
      f_openfile=shellexecute(0,"open","/home/iga_qtong/fortran_xcao/fa.csv",null,null,12)
------------------------------------------------------------------------------------------^
faa.f(18): error #6404: This name does not have a type, and must have an explicit type.   [SHELLEXECUTE]
      f_openfile=shellexecute(0,"open","/home/iga_qtong/fortran_xcao/fa.csv",null,null,12)
-----------------^
compilation aborted for faa.f (code 1)
请问,想要输出到底是什么格式呢?

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-3 13:26

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表