首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Guile Scheme中打开相对于源文件目录的文件?

在Guile Scheme中,可以使用相对路径来打开相对于源文件目录的文件。下面是一种常见的方法:

  1. 首先,使用(current-source-file)函数获取当前源文件的路径。这个函数返回一个字符串,表示当前源文件的绝对路径。
  2. 使用(dirname)函数获取当前源文件所在目录的路径。这个函数接受一个路径字符串作为参数,并返回该路径的父目录路径。
  3. 使用(build-path)函数将当前源文件所在目录的路径与相对路径拼接起来,得到要打开的文件的绝对路径。
  4. 最后,使用(open-file)函数打开文件并进行相关操作。

下面是一个示例代码:

代码语言:txt
复制
(use-modules (ice-9 rdelim))

(define (open-relative-file relative-path)
  (let* ((current-file (current-source-file))
         (current-dir (dirname current-file))
         (absolute-path (build-path current-dir relative-path)))
    (with-input-from-file absolute-path
      (lambda ()
        ; 在这里进行文件操作
        ))))

在这个示例中,open-relative-file函数接受一个相对路径作为参数,并将其与当前源文件所在目录的路径拼接起来,得到要打开的文件的绝对路径。然后,可以在lambda表达式中进行文件操作。

请注意,这只是一个示例,实际使用时可能需要根据具体情况进行适当的修改和调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在Linux删除目录所有文件

在Linux操作系统,删除目录所有文件是一项常见任务。无论是清理不需要文件还是准备删除整个目录,正确地删除目录所有文件是重要。...本文将详细介绍如何在Linux删除目录所有文件,包括使用常见命令和技巧进行操作。删除目录所有文件在Linux,有几种方法可以删除目录所有文件。...使用 -r 选项可以递归地删除目录及其子目录文件。...-type f 选项表示搜索普通文件。-delete 选项表示删除搜索到文件。该命令将递归地搜索目录及其子目录所有文件,并直接删除它们。...总结正确地删除目录所有文件是Linux系统常见任务之一。

14.8K40

何在git删除指定文件目录

部分场景,我们会希望删除远程仓库(比如GitHub)目录文件。...具体操作 拉取远程Repo到本地(如果已经在本地,可以略过) $ git clone xxxxxx 在本地仓库删除文件 $ git rm 我文件 在本地仓库删除文件夹 $ git rm -r...我文件夹/ 此处-r表示递归所有子目录,如果你要删除,是空文件夹,此处可以不用带上-r。...提交代码 $ git commit -m"我修改" 推送到远程仓库(比如GitHub) $ git push origin xxxxxx 补充: git rm 查看git rm说明文档: $ git...-n, --dry-run 演习 -q, --quiet 不列出删除文件 --cached 只从索引区删除 -f, --force 忽略文件更新状态检查 -r 允许递归删除 --ignore-unmatch

3.4K20

Eclipse直接打开java文件在计算机目录

Eclipse关联打开文件在计算机目录 Step1 - 安装插件  菜单栏Help -> Install New Software…  如图: Step2 - 指定插件URL  在弹出界面中点击...选择自己需要安装选项,不要可不选。这里物品们选择ExploreFS(即关联到文件系统意思),点击Finish(笔者电脑上已安装,所以这里不可选了)。...之后可能会有提示说一些协议问题,直接忽略,continue即可。  如图: Step4 - 重启eclipse  安装完成,需要重启eclipse。  ...如图: Step5 - 在文件系统里面打开选定文件  重启生效后,点击文件可以看到Explore in File System选项。...我们右键点击BubbleSortUtil.java文件可以看到该选项,点击后直接打开该java类文件文件系统位置。很方便吧。  如图:

99410

何在 Linux 系统防止文件目录被意外删除或修改

有个简单又有用命令行工具叫chattr(Change Attribute 缩写),在类 Unix 等发行版,能够用来防止文件目录被意外删除或修改。...在这篇简短教程,我们一起来看看怎么在实际应用中使用 chattr 命令,来防止文件目录被意外删除。...Linux防止文件目录被意外删除和修改 默认,chattr 命令在大多数现代 Linux 操作系统是可用。...a – 只能向文件添加数据 A – 不更新文件目录最后访问时间 c – 将文件目录压缩后存放 C – 不适用写入时复制机制(CoW) d – 设定文件不能成为 dump 程序备份目标 D –...意思是你不可以编辑修改文件已存在数据,或者重命名这个文件或者删除这个文件,你仅可以使用追加模式打开这个文件

4.9K20

ExcelVBA-Fso打开文件对话框取得文件一层目录列表

ExcelVBA-Fso打开文件对话框取得文件一层目录列表 有时候我们在工作时需要取得文件夹下面的第一层文件目录列表,我们可以dos命令做成bat文件,生成一个txt文件, 也可以用以下方法...:VBA直接取出,我只要一层就可以啦,今天练习一下用做一个自定义函数,把取得列表返回到一个数组,有时有用,这里做个记录吧 这里有两个代码常常用到,(1)打开文件对话框(2)取得列表并返回到数组...Dim arr() As String With Application.FileDialog(msoFileDialogFolderPicker) .Title = "请选择文件夹...= s & vbCrLf m = m + 1 Next ' MsgBox s GetFolderList = temp_arr End Function ====这是我电脑中一个文件夹...“电脑教程”列表==== ====运行代码,列表取出来了===== ====今天就学习到此吧====

1.2K30

Xcode Concepts

Build Phases 我们可以看到该部分主要分为四项内容,当然也可以手动添加一些脚本在构建过程运行,使用Cocoapods管理项目这里就会增加一些自定义脚本。...Copy Bundle Resources 指生成 Product .app 内将包含哪些资源文件,同样可以通过红框【+】【-】按钮进行添加或删除资源来控制编译源文件。...该阶段定义了对象源文件,包括图片,xib文件等等。...一个Workspace可以有多个Project,其都是相互独立,我们可以在不打开 Workspace 情况下直接打开 Project,一个Project也可以分布在多个Workspace。...通过Workspace,我们可以灵活组合Project,实现非常庞大、复杂工程; 默认情况下,Workspace 所有 Project 都构建在同一目录

2.1K20

玩转 Xcode Playground(下)

添加方式同添加辅助代码类似。 资源文件只能被保存在 Resources 目录或其子目录,辅助代码也只能被保存在 Sources 目录或其子目录。...保存在项目根目录 Resource 源文件,可以被各个 Page 主代码及 Page 辅助代码使用。...如果在 Xcode 对资源文件进行更名,Playground 将在保存替身目录为新名称创建一个替身,但并不会删除原来名称替身。如果将资源文件删除,对应替身文件并不会删除。...确有为单个 Page 添加资源需求,可以在 Xcode 或 finder 上添加好后,再于 Swift Playground 打开。...如何使用本地化文件(主要用于 Swift Playgrounds) 同 SPM 对于本地化管理方式类似,只需要在资源文件目录创建所需语言目录(例如en.lproj、zh-CN.lproj),便可在目录添加对应语言字符串文件和资源文件

1.7K30

iOS如何实现多个环境一次打包

概述 偶然看到一个很有趣问题:如何在ios环境下实现多个环境同时打包。...如果此时项目里面有cocopods的话,打开Configuration Set就会发现是如下样子。 ? 然后打开项目的pod文件打开配置是会看到如下信息: ?...编译过程,编译器会根据我们设置好Scheme去自己选择Debug,Release,TestRelease分别对应ProductName。 ? ?...Xcode Project 文件会包含以下信息,对资源文件引用(源码.h和.m文件,frame,资源文件plist,bundle文件等,图片文件image.xcassets还有Interface Builder...(nib),storyboard文件)、文件结构导航中用来组织源文件组、Project-level build configurations(Debug\Release)、Targets、可执行环境,

1.7K60

iOS如何实现多个环境一次打包

概述 偶然看到一个很有趣问题:如何在ios环境下实现多个环境同时打包。...如果此时项目里面有cocopods的话,打开Configuration Set就会发现是如下样子。 ? 然后打开项目的pod文件打开配置是会看到如下信息: ?...编译过程,编译器会根据我们设置好Scheme去自己选择Debug,Release,TestRelease分别对应ProductName。 ? ?...Xcode Project 文件会包含以下信息,对资源文件引用(源码.h和.m文件,frame,资源文件plist,bundle文件等,图片文件image.xcassets还有Interface Builder...(nib),storyboard文件)、文件结构导航中用来组织源文件组、Project-level build configurations(Debug\Release)、Targets、可执行环境,

2.3K80

iOS 组件化相关配置

选择配置模板后会自动打开工程文件 工程配置 由于在pod开发模式下,在修改开发pod内容后不会立即生效,需要编辑Scheme 在Build 添加 该组件 ?...更改完成后编辑pod相关组件文件即可实时生效 配置.podspec 选择.podspec文件 配置相关信息,主要配置资源文件源文件和第三方依赖 #源文件 s.source_files = 'OnlinePT-Login...将原默认文件改个名字,复制到两个子目录,确保两个目录中都有文件 打开终端,cd到Example目录下,执行pod install 可以看到将.podspec依赖也添加进了项目中 ?...试着在Common目录下新建一个.swift文件 可以发现 该文件自动整理到Common目录下,当然也可以继续新建子目录,不过要注意是子目录必须有文件pod install 时才会添加改目录 同样方法可以添加图片资源文件...多语言也可以照此方法添加,这样所有的文件就比较整齐~ 配置资源引用 在主工程也会经常使用到组件相关资源内容,这里仿照Swift + RxSwift MVVM 模块化项目实践一文添加相关代码,用于资源文件外部引用

92620

微信读书排版引擎自动化测试

引言 在微信读书 App [1] ,排版引擎负责把书源文件解析、渲染至屏幕,是最常用、最复杂组件之一。而开发同学对排版引擎日常修改,可能影响了海量书籍排版结果。...、XML及图像文件等等)、整理信息(CSS及XSL等),并将排版后内容输出至显示器或打印机。...[2]" 在微信读书 App ,排版引擎负责解析 EPUB 或 TXT 格式书籍源文件,将排版后书籍内容,文字、图像、注解等元素,在屏幕上渲染。...在人工测试,对每次变更测试,有步骤如下: 1 需要把变更前、变更后 App 包安装到两台设备2 打开 App,登录,把要测试书购买、加入到书架3 打开要测试书,设置排版偏好,翻页,用眼睛查看屏幕上排版结果...编译项目,安装到模拟器 通过 Instrument UI Automation 脚本,打开模拟器,运行微信读书App,进入到测试彩蛋页面:执行 scheme,生成排版结果 把结果从模拟器移动到指定目录

1.4K20

工程管理篇 | APP环境分离实现

即是说,每个Target代表一个编译产品。每个Target,可以有不同编译源文件和资源文件。 那么,实现环境分离方案,就是分别建立测试环境和生产环境两个Target。...复制完成后, (2)不止是TARGETS列表多出了名为 productname copy 新Target, 同时也会为该新Target生成名为 productname copy scheme..., (3)以及在项目的根目录下生成 productname copy-Info.plist 文件。...(2)修改scheme则可以在Xcode左上角Run\Stop按钮右边scheme列表菜单中选择Manage Schemes,打开弹出框, 选中某个Scheme后,再点击一下即可编辑修改名称...(3)plist文件修改直接双击即可修改,修改为productnameBeta-Info.plist,同时, 我还将其移到与默认Info.plist文件在同个目录下。

65620

Xcode多环境配置

是一个项目的整体,相当于一个仓库,包括了所有的代码和资源文件; Target:相当于一个具体产品,包含了对于代码,资源文件具体使用规则和配置; Scheme: 对指定Target环境进行配置;...; 二、多Target 配置 1.总结特点 优点:方便管理代码,资源文件,比如在Compile Sources、Copy Bundle Resources里根据需要增加或者删除需要编译代码和资源; 缺点...info.plist文件; 3.读取info.plist,手动切换configration或者使用不同Scheme运行,将得到不同信息; guard let path = Bundle.main.path...,保存名称以"目录名-App名.环境"为格式, "Config-TestProject.debug"; 在.xcconfig文件里写入配置,而这里用到key其实都是build settings配置选项缩写.../Pods-TestProject.debug.xcconfig" 6.xcconfig关键字冲突问题 将Pods生成.xcconfig文件通过include导入自定义配置文件后,如果两者都对同一个

97941

Xcode工程结构详解

输入必要配置信息后,这些信息包括: 编译选项、证书链选项 项目 Target、单元测试 Target 基于 git 版本控制管理 默认源文件。...在很多情况下,我们工程只有一个 project。可以在 finder 双击后缀名为.xcodeproj 文件,就可以直接打开单个 project 了。...但是iOSAPP可以注册自己URL Scheme,URL Scheme是为方便app之间互相调用而设计。我们可以通过系统OpenURL来打开该app,并可以传递一些参数。...工程目录分包策略 注:以下部分截取自网络。 在ios开发,你简单最糟心项目是什么,肯定有人会说要多糟心有多糟心,曾经我也见到过很糟心项目,没有采用任何框架,编译都好几分钟那种。...文件和 main.m文件; Resource:这个文件夹下主要放是一些资源文件,比如:图片文件、音频文件等; Frameworks: 这个文件夹下主要是将用到系统 Frameworks,整理到这个文件夹下

1.1K30

CIA机密文档追踪工具Scribbles详细分析

同理,Scribbles实际上是在文档嵌入一种隐藏水印,注意,该水印并不是office软件自带水印功能(添加背景字等),而是类似上述“Web beacon”原理,之所以称其为水印,是因为...程序根据读取参数,生成一个特定URL,该URL包含一个特殊字符串,以用来唯一标识文档。 2) 接下来,程序根据读取参数,创建输出目录,复制源文件到输出目录。...接下来处理都是对输出目录得到文件进行。此步骤,如果源文件是.doc后缀类型文件,会将其转为.docx文件,打上水印后再将其处理还原回.doc类型 ? ?...将程序删除临时文件代码注释掉,再次运行程序便可在临时文件word目录rels子目录header1.xml.rels文件查看到已经嵌入水印URL。 ?...InputDir是赋予程序输入目录,程序会自动读取该目录所有文件夹和文件,通过复制源文件方式,创建新文件并打上水印。之后,记录日志到配置tsv日志文件

2K70

微信读书排版引擎自动化测试

引言 在微信读书 App [1] ,排版引擎负责把书源文件解析、渲染至屏幕,是最常用、最复杂组件之一。而开发同学对排版引擎日常修改,可能影响了海量书籍排版结果。...、XML及图像文件等等)、整理信息(CSS及XSL等),并将排版后内容输出至显示器或打印机。...[2]" 在微信读书 App ,排版引擎负责解析 EPUB 或 TXT 格式书籍源文件,将排版后书籍内容,文字、图像、注解等元素,在屏幕上渲染。...在人工测试,对每次变更测试,有步骤如下: 1 需要把变更前、变更后 App 包安装到两台设备 2 打开 App,登录,把要测试书购买、加入到书架 3 打开要测试书,设置排版偏好,翻页,用眼睛查看屏幕上排版结果...编译项目,安装到模拟器 通过 Instrument UI Automation 脚本,打开模拟器,运行微信读书App,进入到测试彩蛋页面:执行 scheme,生成排版结果 把结果从模拟器移动到指定目录

1.5K70

Linux终端命令——cp

,与同时指定 -dpR 这三个选项效果一样,用于复制整个目录,包括目录目录等都递归复制,而且还要保持文件访问模式,所有者,时间戳等属性与原文件一样。...如果你不想被提示,那么请这样输入:\cp source target,或者使用cp命令绝对路径/bin/cp -H 跟随源文件命令行符号链接 -l, –link...–sno-preserve=属性列表 不保留指定文件属性 –parents 复制前在目标目录创建来源文件路径所有目录 -R, -r, --recursive...请查看下面的内。...–remove-destination 尝试打开目标文件前先删除已存在目的地文件 (相对于 --force 选项) –sparse=WHEN 控制创建稀疏文件方式 –strip-trailing-slashes

32.3K30
领券